2016-07-12 4 views
0

Ich verwende eine einfache Web-API, um Wetterdetails für die Stadt London zu erhalten. Allerdings bekomme ich nicht die erforderliche Antwort, sondern stattdessen eine 401 Fehler. Mache ich etwas falsch?Wetter-API (RESTful) geben Fehler

HTML

<html> 
<head> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
<script> 
$(document).ready(function(){ 
    $('button').click(function(){ 
     $.ajax({ 
      type: "get", 
      url: "http://api.openweathermap.org/data/2.5/weather?q=London", 
      dataType: "json", 
      contentType: 'application/json', 
      success: function(data) { 
        //What to do on success 
      } 
     }); 
    }); 
}); 
</script> 
</head> 

<body> 
    <button>Click Me</button> 
</body> 

</html> 

Unter Verwendung der folgenden api

http://openweathermap.org/current

ERROR

enter image description here

+0

Diese URL aufrufen, bekomme ich diese Antwort: '{" cod ": 401," Nachricht ":" Ungültiger API-Schlüssel. Siehe http: // o penweathermap.org/faq#error401 für weitere Informationen. "}' Übergeben Sie einen gültigen API-Schlüssel in der Anfrage? http://openweathermap.org/faq#error401 –

+0

Pls siehe die beigefügte Seite und die Dokumentation. Ich habe die URL nur von dort ausgewählt. – Deadpool

+0

Die Dokumentation besagt, dass Sie einen API-Schlüssel benötigen, um es zu verwenden: http://openweathermap.org/appid. Beachten Sie auch, dass Sie bei einem kostenlosen Konto auf die Anzahl der Aufrufe der API beschränkt sind. Wenn Sie sich auf diesen Service für Ihre Website verlassen müssen, würde ich vorschlagen, dass Sie für ein SLA bezahlen –

Antwort

1

Sie müssen die Schlüssel als Querystring zur URL der Wetter-API hinzufügen.

Sie können eine kleine Funktion hinzufügen, dies zu tun:

http://api.openweathermap.org/data/2.5/forecast/city?id=524901&APPID=12345 

Dann in Ihrem Aufruf der api, Sie: von der api erforderlich

var url = 'http://api.openweathermap.org/data/2.5/forecast/city'; 
var keys = { 
    id: 524901, 
    APPID: 12345 // Put your key here 
}; 

function makeUrl (url, queryStringObject) { 
    var query = []; 
    // Loops through each key 
    for(var key in queryStringObject){ 
     query.push(encodeURIComponent(key) + '=' + 
      encodeURIComponent(queryStringObject[key])); 
    } 
    // Returns the url with the keys appended 
    return url + (query.length ? '?' + query.join('&') : ''); 
} 

Dies wird wieder einen Schlüssel in dem Format kann den Funktionsaufruf verwenden: