json 如何发送带有头参数的HTTP请求?

wfsdck30  于 2023-02-06  发布在  其他
关注(0)|答案(3)|浏览(204)

我对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;
}

谢谢大家!

mwyxok5s

mwyxok5s1#

如果它说API密钥被列为一个头文件,你很可能需要在http请求的headers选项中设置它。

headers: {'Authorization': '[your API key]'}

下面是另一个Question的示例

$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 
   } 
 });

我从this question得到这个,我正在工作,所以现在不能测试,但是看起来很可靠

**编辑2:**非常确定您应该能够使用这一行:

headers: {'Authorization': '[your API key]'},

而不是第一次编辑中的beforeSend行。这对您来说可能更简单

7uzetpgm

7uzetpgm2#

使用您自己的代码和不使用jQuery的轻微更改

function testingAPI(){ 
    var key = "8a1c6a354c884c658ff29a8636fd7c18"; 
    var url = "https://api.fantasydata.net/nfl/v2/JSON/PlayerSeasonStats/2015";
    console.log(httpGet(url,key)); 
}

function httpGet(url,key){
    var xmlHttp = new XMLHttpRequest();
    xmlHttp.open( "GET", url, false );
    xmlHttp.setRequestHeader("Ocp-Apim-Subscription-Key",key);
    xmlHttp.send(null);
    return xmlHttp.responseText;
}

"谢谢你"

r6hnlfcb

r6hnlfcb3#

**`

你需要有一个
send();语句。
这样您就可以将请求发送到站点服务器。
`**

相关问题