使用Arduino&发送PUT请求ESP8622

时间:2015-06-30 22:30:52

标签: http arduino arduino-uno iot

我正在尝试使用ESP8622向http://requestb.in/qucuwrqu?inspect发送一些测试请求,但没有运气。我尝试了很多,但似乎无法正常工作。

通过cURL请求端点时,端点工作正常。

AT+RST

AT+CWMODE=1

AT+CIPMUX=0

AT+CWJAP="wifi ssid","password"

AT+CIPSTART="TCP","requestb.in",80"

AT+CIPSEND=53
POST /qucuwrqu HTTP/1.1\r\n\r\n1234567890123456789012

AT+CIPCLOSE

所有命令除了使用POST(无)之外的命令我正在使用NL / CR发送。

老实说,我需要发送更复杂的请求,但希望能让它更简单,首先希望它能帮助我完成更复杂的请求。

更复杂的应该在数据中有类似的东西:

PUT /rooms/2.json HTTP/1.1\r\nHost: some_host\r\nContent-Type: application/x-www-form-urlencoded\r\nConnection: close\r\nContent-Length: 15\r\n\r\n{"empty": true}

它是否也适用于https://?

如果您发现可能出现的问题,请告诉我。

更新一些附加信息

我尝试过这样的事情(空样本,只发送AT命令):

AT

OK
AT+CWJAP="SSID","password"

OK
AT+CIPSTART="TCP","50.16.237.179",80

OK
Linked
AT+CIPSEND=30

> GET /qucuwrqu?key=sometest\r\n
SEND OK

OK
Unlink

但网络方面没有回应。我正在接受ESP8622的核心响应,所以我希望它能正常工作。还尝试了这段代码:

#define SSID "Dawid"
#define PASS "somepass"
#define IP "50.16.237.179" // requestb.in
String GET = "GET /qucuwrqu?key=some_test";

void setup()
{
  Serial.begin(9600);
  Serial.println("AT");
  delay(5000);
  if(Serial.find("OK")){
    connectWiFi();
  }
}

void loop(){
  updateTemp("teesst");
  delay(60000);
}

void updateTemp(String tenmpF){
  String cmd = "AT+CIPSTART=\"TCP\",\"";
  cmd += IP;
  cmd += "\",80";
  Serial.println(cmd);
  delay(2000);
  if(Serial.find("Error")){
    return;
  }
  cmd = GET;
  cmd += tenmpF;
  cmd += "\r\n";
  Serial.print("AT+CIPSEND=");
  Serial.println(cmd.length());
  if(Serial.find(">")){
    Serial.print(cmd);
  }else{
    Serial.println("AT+CIPCLOSE");
  }
}


boolean connectWiFi(){
  Serial.println("AT+CWMODE=1");
  delay(2000);
  String cmd="AT+CWJAP=\"";
  cmd+=SSID;
  cmd+="\",\"";
  cmd+=PASS;
  cmd+="\"";
  Serial.println(cmd);
  delay(5000);
  if(Serial.find("OK")){
    return true;
  }else{
    return false;
  }
}

我注意到它没有连接到WiFi。

可能出现什么问题?

谢谢你, 关心大卫

0 个答案:

没有答案