it-swarm.com.de

Wie sende ich eine HTTP-Anfrage mit einem Header-Parameter?

Ich bin im Bereich Javascript und Web-Programmierung im Allgemeinen sehr neu und brauche dazu etwas Hilfe. Ich habe eine HTTP-Anforderung, die ich durch Javascript senden muss, und muss die Ausgabe in einer Variablen speichern. Ich habe versucht, nur die Aufruf-URL zu verwenden:

https://api.fantasydata.net/nfl/v2/JSON/PlayerSeasonStats/2015

Es wird jedoch ein Authentifizierungsfehler zurückgegeben, da ich meinen API-Schlüssel nicht gesendet habe und mir nicht gezeigt wird, wie dies nur in der URL geschieht. Der API-Schlüssel wird als Header und nicht als Parameter aufgeführt. Ich bin mir nicht sicher, was ich damit anfangen soll. Ich habe versucht, die XMLHttpRequest () -Klasse zu verwenden, aber ich bin mir nicht ganz sicher, ob ich genau verstehe, was es tut, und ich könnte nicht, dass es funktioniert. 

Die eigentliche HTTP-Anfrage 

GET https://api.fantasydata.net/nfl/v2/JSON/PlayerSeasonStats/2015 HTTP/1.1
Host: api.fantasydata.net
Ocp-Apim-Subscription-Key: ••••••••••••••••••••••••••••••••

Ich muss nur herausfinden, wie diese Anforderung zusammen mit dem Schlüssel gesendet wird und wie das JSON-Dokument gespeichert wird, das als Variable in Javascript zurückgegeben wird. 

EDIT: Das habe ich bisher:

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

Vielen Dank!

8
Faraz Ahsan

Wenn der API-Schlüssel als Header aufgeführt ist, müssen Sie ihn höchstwahrscheinlich in der Option headers Ihrer http-Anfrage festlegen. Normalerweise so etwas:

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

Hier ist ein Beispiel von einem anderen Frage

$http({method: 'GET', url: '[the-target-url]', headers: {
  'Authorization': '[your-api-key]'}
});

Edit: Ich habe gerade gesehen, dass Sie die Antwort in einer Variablen speichern möchten. In diesem Fall würde ich wahrscheinlich nur AJAX verwenden. Etwas wie das :

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

Ich habe dies aus dieser Frage und bin auf der Arbeit, also kann ich es momentan nicht testen, sieht aber solide aus

Edit 2: Ziemlich sicher, dass Sie diese Zeile verwenden können:

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

anstelle der beforeSend-Zeile in der ersten Bearbeitung. Dies kann für Sie einfacher sein

6
Danny H

Mit Ihrem eigenen Code und einem leichten Wechsel ohne 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;
}

Danke dir

0
Shashank