如何发送带有头部参数的HTTP请求?
我对JavaScript和网络编程一般都很陌生,我需要一些帮助。 我有一个HTTP请求,我需要通过JavaScript发送,并需要将输出存储在一个变量中。 我试着只使用调用url:
https://api.fantasydata.net/nfl/v2/JSON/PlayerSeasonStats/2015
但是它返回一个认证错误,因为我没有发送我的API密钥,也没有告诉我如何在URL中完成。 API密钥被列为标题而不是参数,我不知道该如何处理。 我尝试过使用XMLHttpRequest()类,但我不太确定我是否完全理解它的功能,也不能让它起作用。
实际的HTTP请求
GET https://api.fantasydata.net/nfl/v2/JSON/PlayerSeasonStats/2015 HTTP/1.1
Host: api.fantasydata.net
Ocp-Apim-Subscription-Key: ••••••••••••••••••••••••••••••••
我只需要弄清楚如何发送该请求以及密钥,以及如何将它作为变量返回的JSON文档存储在JavaScript中。
编辑:这是我迄今为止:
function testingAPI(){
var key = "8a1c6a354c884c658ff29a8636fd7c18";
httpGet("https://api.fantasydata.net/nfl/v2/JSON/PlayerSeasonStats/2015",key );
alert(xmlHttp.responseText);
var x = 0;
}
function httpGet(theUrl,key)
{
var xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", theUrl, false ); // false for synchronous request
xmlHttp.setRequestHeader("Ocp-Apim-Subscription-Key",key);
xmlHttp.send( null );
return xmlHttp.responseText;
}
谢谢!
如果它说API密钥被列为标题,则很可能需要将其设置在http请求的headers
选项中。 通常情况下是这样的:
headers: {'Authorization': '[your API key]'}
以下是另一个问题的示例
$http({method: 'GET', url: '[the-target-url]', headers: {
'Authorization': '[your-api-key]'}
});
编辑:刚才看到你想将响应存储在变量中。 在这种情况下,我可能只会使用AJAX。 像这样的东西:
$.ajax({
type : "GET",
url : "[the-target-url]",
beforeSend: function(xhr){xhr.setRequestHeader('Authorization', '[your-api-key]');},
success : function(result) {
//set your variable to the result
},
error : function(result) {
//handle the error
}
});
我从这个问题得到了这个,我在工作,所以我目前无法测试它,但看起来很稳固
编辑2:很确定你应该可以使用这一行:
headers: {'Authorization': '[your API key]'},
而不是第一次编辑中的beforeSend
行。 这对你来说可能更简单