Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何发送带有标头参数的HTTP请求?_Javascript_Json_Api_Http_Callback - Fatal编程技术网

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

Javascript 如何发送带有标头参数的HTTP请求?,javascript,json,api,http,callback,Javascript,Json,Api,Http,Callback,一般来说,我对javascript和web编程非常陌生,需要一些帮助。我有一个HTTP请求,需要通过javascript发送,并且需要将输出存储在一个变量中。我尝试只使用呼叫url: https://api.fantasydata.net/nfl/v2/JSON/PlayerSeasonStats/2015 但是它返回了一个身份验证错误,因为我没有发送API密钥,并且它没有告诉我如何在URL中执行此操作。API键被列为头,而不是参数,我不知道该怎么办。我尝试使用XMLHttpRequest()

一般来说,我对javascript和web编程非常陌生,需要一些帮助。我有一个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]'}
$.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 
   } 
 }); 
下面是另一个例子

编辑:刚刚看到您想要将响应存储在变量中。在这种情况下,我可能只使用AJAX。大概是这样的:

headers: {'Authorization': '[your API key]'}
$.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
行。使用自己的代码和使用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;
}

谢谢

您的代码发送请求在哪里?抱歉,刚刚添加了它!所以这是有道理的,但我如何将其合并到我的javascript文件中呢?我正在编辑我的答案,正如你的评论,希望可以澄清一些事情。您可以将AJAX请求放在需要获取JS文件中信息的任何位置。我个人喜欢让它们有自己的功能,我现在就试试!非常感谢您不用在发送前使用
,您可以使用我答案顶部的标题行。这可能更容易,我也会把它添加到答案的底部。这个答案的工作量非常小。我不知道你对问题中的代码做了什么更改,也不知道为什么。请以后更清楚地回答问题,并解释任何更改的原因。[不推荐使用]主线程上的同步XMLHttpRequest不推荐使用,因为它会对最终用户的体验产生有害影响。如需更多帮助,请查看。