Я пытаюсь получить данные из darksky api для использования в небольшом проекте arduino.Я использую Arduino UNO и плату ESP8266. Я могу подключиться к Интернету через плату, но я очень застрял, когда дело доходит до запроса get.
Я пробовал много разных комбинаций строк, чтобы попытаться заставить запрос работать. Но, несмотря на все мои усилия, статус всегда "Неожиданный ответ: HTTP / 1.1 400 Bad Request".Я приложил свой код ниже.Я ценю любую помощь.
#include <ArduinoHttpClient.h>
#include "WiFiEsp.h"
#ifndef HAVE_HWSERIAL1
#include "SoftwareSerial.h"
// set up software serial to allow serial communication to our TX and RX pins
SoftwareSerial Serial1(10, 11);
#endif
// Set baud rate of so we can monitor output from esp.
#define ESP8266_BAUD 9600
// CHANGE THIS TO MATCH YOUR SETTINGS
char ssid[] = "SSID";
char pass[] = "PASS";
char serverAddress[] =
"https://api.darksky.net/forecast/KEY/44.64,-63.57?exclude=hourly,minutely,daily,alerts,flags";
int status = WL_IDLE_STATUS;
// Define an esp server that will listen on port 443 (https)
//WiFiEspServer server(443);
WiFiEspClient client;
void setup(){
// Open up communications for arduino serial and esp serial at same rate
Serial.begin(9600);
Serial1.begin(9600);
// Initialize the esp module
WiFi.init(&Serial1);
// Start connecting to wifi network and wait for connection to complete
while (status != WL_CONNECTED)
{
Serial.print("Conecting to wifi network: ");
Serial.println(ssid);
status = WiFi.begin(ssid, pass);
}
digitalWrite(13,1);
// Once we are connected log the IP address of the ESP module
Serial.print("IP Address of ESP8266 Module is: ");
Serial.println(WiFi.localIP());
Serial.println("You're connected to the network");
client.setTimeout(10000);
if (!client.connect("api.darksky.net", 443)) {
Serial.println(F("Connection failed"));
return;
}
else{
Serial.println("--- connected to api.darksky.net on port 443 ---");
}
// Send HTTP request
client.println(F("GET /forecast/KEY/44.64,-63.57 HTTP/1.0"));
client.println(F("Host: api.darksky.net.org"));
client.println(F("Connection: close"));
if (client.println() == 0) {
Serial.println(F("Failed to send request"));
return;
}
else{
Serial.println("--- Request sent ---");
}
// Check HTTP status
char status[32] = {0};
client.readBytesUntil('\r', status, sizeof(status));
if (strcmp(status, "HTTP/1.1 200 OK") != 0) {
Serial.print(F("Unexpected response: "));
Serial.println(status);
return;
}
}
void loop(){
}
Спасибо за помощь.Я был бы очень признателен.Я не уверен, что проблема в моих строках.Или что я использую HTTP-клиент для доступа к материалам HTTPS.Еще раз спасибо.