Json 使用ESP8266将Arduino连接到wunderground
我正在尝试使用ESP8266和Arduino Uno连接到wunderground并获取JSON文件以获取当前天气。使用我的代码,我可以很好地连接到服务器。问题是它没有给我完整的退货文件Json 使用ESP8266将Arduino连接到wunderground,json,arduino,esp8266,Json,Arduino,Esp8266,我正在尝试使用ESP8266和Arduino Uno连接到wunderground并获取JSON文件以获取当前天气。使用我的代码,我可以很好地连接到服务器。问题是它没有给我完整的退货文件 #include <SoftwareSerial.h> #include <ArduinoJson.h> SoftwareSerial esp8266(8, 9); bool flag = true; void setup() { // put your setup code h
#include <SoftwareSerial.h>
#include <ArduinoJson.h>
SoftwareSerial esp8266(8, 9);
bool flag = true;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
esp8266.begin(9600);
}
void loop() {
if (flag) {
String cmd;
int length;
cmd = "AT+CIPSTART=\"TCP\",\"";
cmd += "api.wunderground.com";
cmd += "\",80";
esp8266.println(cmd);
Serial.println(cmd);
delay(2000);
Serial.write(esp8266.read());
if (esp8266.find("CONNECT")) {
Serial.println("CONNECT found so your connected");
}
String action;
action = "GET http://api.wunderground.com/api/APIKEY/conditions/q/Canada/Regina.json HTTP/1.0\r\n\r\n";
length = action.length();
cmd = "AT+CIPSEND=";
cmd += length;
esp8266.println(cmd);
Serial.println(cmd);
delay(5000);
if (esp8266.find(">")) {
Serial.print(">");
} else {
esp8266.println("AT+CIPCLOSE");
Serial.println(F("connect timeout"));
}
esp8266.println(action);
Serial.println(action);
delay(700);
String test = "";
while (esp8266.available()) {
char c = esp8266.read();
test += c;
}
Serial.println(test);
flag = false;
Serial.println("Flag is false");
}
}
#包括
#包括HTTP/1.0
忙碌的s
Recv 97字节
发送OK
+知识产权署,1460:HTTP/1.0:“0.1”,
“服务条款”:“,
"
国旗是假的
正如您所看到的,我只收到了JSON文件的一小部分。我不确定问题出在哪里。它根本没有发送JSON。它检测到您的Arduino/ESP组合不是人,并且正在责骂您,让您知道您违反了服务条款,如中所述。您需要设置一些标题,伪装成浏览器和因此,作为人类用户通过。在我问了这个问题后,我遇到了一些类似于您所提到的内容,有人必须设置更多的标题。我将不得不进一步研究这个问题。您知道我必须设置哪些特定的标题吗?您想要的是user\u AGENT。