我正在尝试通过他们的 API 从我的 SendGrid 帐户获取数据。我正在使用经典的 ASP。我发现some code that works除了我需要为 SendGrids API 添加授权,如所述 in their documentation .
我发现几个例子似乎表明我需要在 xmlhttp.open 之后和 xmlhttp.send 之前添加 xmlhttp.setRequestHeader 但是当我取消注释下面的行“xmlhttp.setRequestHeader”时,我在我的文件中收到 500 错误浏览器。现在谁能告诉我将授权部分添加到 xmlhttp 对象中?
为清楚起见进行编辑:当我注释“xmlhttp.setRequestHeader...”行时,脚本运行并返回预期的 json 结果,表明我需要进行身份验证。当我取消注释该行时,我收到 500 错误。我已在下面的代码中用通用占位符替换了我的工作 api key (使用 cURL 命令进行测试)。真正的 key 位于我服务器上的文件中。
这是我正在使用的代码:
<%@ Language=VBScript %>
<%
Set xmlhttp = CreateObject("Msxml2.ServerXMLHTTP.6.0")
xmlhttp.open "GET", "https://api.sendgrid.com/v3/campaigns?limit=10&offset=0 HTTP/1.1", false
'xmlhttp.setRequestHeader "Authorization", "Bearer my-correct-sendgrid-api-key"
xmlhttp.send ""
Response.AddHeader "Content-Type", "application/json;charset=UTF-8"
Response.Charset = "UTF-8"
pageReturn = xmlhttp.responseText
Set xmlhttp = Nothing
response.write pageReturn
%>
看来基础知识正在发挥作用,因为上面的代码返回了预期的 json 结果,错误消息表明我需要进行身份验证:
{
errors: [
{
field: null,
message: "authorization required"
}
]
}
SendGrids 文档使用此示例:
GET https://api.sendgrid.com/v3/resource HTTP/1.1
Authorization: Bearer Your.API.Key-HERE
最佳答案
谢谢大家!信用归Kul-Tigin指出我的错误,该错误误解了 SendGrids 示例中 URL 的一部分的注释“HTTP/1.1”。
当我改变时:
xmlhttp.open "GET", "https://api.sendgrid.com/v3/campaigns?limit=10&offset=0 HTTP/1.1", false
xmlhttp.setRequestHeader "Authorization", "Bearer my-correct-sendgrid-api-key"
至:
xmlhttp.open "GET", "https://api.sendgrid.com/v3/campaigns?limit=10&offset=0", false
xmlhttp.setRequestHeader "Authorization", "Bearer my-correct-sendgrid-api-key"
它开始工作,没有错误。这是工作代码:
<!-- language: lang-js -->
<%@ Language=VBScript %>
<%
Set xmlhttp = CreateObject("Msxml2.ServerXMLHTTP.6.0")
xmlhttp.open "GET", "https://api.sendgrid.com/v3/campaigns?limit=10&offset=0", false
xmlhttp.setRequestHeader "Authorization", "Bearer my-correct-sendgrid-api-key"
xmlhttp.send ""
Response.AddHeader "Content-Type", "application/json;charset=UTF-8"
Response.Charset = "UTF-8"
pageReturn = xmlhttp.responseText
Set xmlhttp = Nothing
response.write pageReturn
%>
SearchAndResQ我将阅读您提供的有关错误捕获的链接。谢谢!
关于json - 经典 ASP xmlhttp 获取如何为 sendgrid api 添加身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37669768/