使用带认证令牌的TinyURL API缩短URL时遇字段必填错误求助
解决TinyURL API调用时"The URL field is required"错误
你的问题出在请求参数的传递方式:TinyURL的/create接口要求将待缩短的URL放在JSON格式的请求体中,而不是请求头里。另外你的代码还缺少了发送请求的关键步骤。
修正后的完整代码
Function GetTinyUrl(LongURL As String) As String Dim xml As Object Dim jsonPayload As String Set xml = CreateObject("WinHttp.WinHttpRequest.5.1") ' 构造符合要求的JSON请求体,转义URL中的双引号避免格式错误 jsonPayload = "{""url"": """ & Replace(LongURL, """", "\""") & """}" xml.Open "POST", "https://api.tinyurl.com/create", False xml.SetRequestHeader "Authorization", "Bearer " & "your_api_token_here" xml.SetRequestHeader "Content-Type", "application/json" ' 必须声明请求体格式 ' 发送请求体(之前的代码遗漏了这一步) xml.Send jsonPayload GetTinyUrl = xml.ResponseText Set xml = Nothing End Function
关键修改说明
- 新增
Content-Type请求头:告诉服务器请求体是JSON格式,这是API接收参数的必要前提 - 将URL放入JSON请求体:替代原来放在请求头的错误方式,符合TinyURL API的参数要求
- 添加
xml.Send调用:之前的代码只配置了请求但没有发送,这是请求能到达服务器的关键步骤 - 转义URL中的双引号:用
Replace处理URL可能包含的双引号,避免JSON格式解析失败
内容的提问来源于stack exchange,提问作者Jaspos
相关产品推荐
相关产品推荐

