Hallo Zusammen,
ich bin grade dabei meine Worduhr um eine Statuszeile zu erweitern und möchte dazu gerne die Wetterdaten von OpenWeatherMap nutzen.
Mit der API als solches gibt's soweit auch kein Problem.
Mein Problem liegt an der Deklaration/Zusammstellung der URL.
Geh ich wie folgt vor bekomme ich ein HTTP-Statuscode von 200 und die entsprechenden Wetterdaten.
String httpTestLink;
httpTestLink = "http://api.openweathermap.org/data/2.5/forecast?id=3221033&mode=xml&lang=de&units=metric&appid=cddce1bd28dc16d16562f8"; // apiKey fürs Forum gekürzt
Da ich die CityID und den apiKey etwas variabel halten möchte habe ich es wie folgt versucht.
Jedoch bekomme ich so ein HTTP-Statuscode von 400, Bad Request
String httpLink;
String Serverlink = "http://api.openweathermap.org/data/2.5/forecast?id=";
String CityID = "3221033";
String ServerPara = "&mode=xml&lang=de&units=metric&appid=";
String apiKey = "cddce1bd28dc16d16562";// apiKey fürs Forum gekürzt
httpLink = Serverlink;
httpLink.concat(CityID);
httpLink.concat(ServerPara);
httpLink.concat(apiKey);
//Alternativ: httpLink = Serverlink + CityID + ServerPara + apiKey;
Und irgendwie kann ich da keinen Fehler finden
Hat jemand von euch eine Idee woran es liegen könnte ?
Zur vollständigkeit mal die ganze Funktion:
void OpenWeatherMap_Get(){
String OWM_Result;
int httpCode;
String httpLink;
String httpTestLink;
if (debug) Serial.println( "" );
if (debug) Serial.println( "OpenWeatherMap_Get");
if (debug) Serial.println( "**********************************************************" );
// Funktioniert: --> httpCode = 200
httpTestLink = "http://api.openweathermap.org/data/2.5/forecast?id=3221033&mode=xml&lang=de&units=metric&appid=cddce1bd28dc16d16";// apiKey fürs Forum gekürzt
if (debug) Serial.print( "Funktioniert : "); if (debug) Serial.print( httpTestLink ); if (debug) Serial.println( "<" );
// Funktioniert NICHT: --> httpCode = 400
httpLink = Serverlink;
httpLink.concat(CityID);
httpLink.concat(ServerPara);
httpLink.concat(apiKey);
if (debug) Serial.print( "Funktioniert NICHT: "); if (debug) Serial.print( httpLink ); if (debug) Serial.println( "<" );
// Funktioniert NICHT: --> httpCode = 400
//httpLink = Serverlink + CityID + ServerPara + apiKey;
//if (debug) Serial.print( "Funktioniert NICHT: "); if (debug) Serial.print( httpLink ); if (debug) Serial.println( "<" );
if ((WiFi.status() == WL_CONNECTED)) {
HTTPClient http;
http.begin(httpLink);
httpCode = http.GET();
if (httpCode > 0) {
OWM_Result = http.getString();
if (debug) Serial.println( "HTML Result ==> ");
if (debug) Serial.println(OWM_Result);
http.end();
} else {
if (debug) Serial.println( "httpCode <= 0");
http.end();
return;
}
} else {
if (debug) Serial.println( "No WIFI Connection");
return;
}
//Parsen des HTML Codes zur Fehleranalyse entfernt
}
Schon mal besten Dank im voraus.
Grüße Jürgen