我对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: ••••••••••••••••••••••••••••••••
我只需要弄清楚如何发送该请求以及密钥以及如何存储它作为javascript中的变量返回的JSON文档.
编辑:这是我到目前为止:
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密钥被列为标题,那么您很可能需要在headers
http请求的选项中进行设置.通常是这样的:
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
第一次编辑中的行.这对你来说可能更简单