Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 使用ESP8266将Arduino连接到wunderground_Json_Arduino_Esp8266 - Fatal编程技术网

Json 使用ESP8266将Arduino连接到wunderground

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

我正在尝试使用ESP8266和Arduino Uno连接到wunderground并获取JSON文件以获取当前天气。使用我的代码,我可以很好地连接到服务器。问题是它没有给我完整的退货文件

#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。