使用AT命令在esp8266中无法获取

时间:2017-05-09 02:44:07

标签: at-command esp8266

我试图从ESP控制器的网站获取温度。我使用IE和Fiddler使用相同的请求,他们工作得非常好。从ESP的角度来看,我也没有做错任何事。

请在下面找到我的esp请求和回复。

AT+CIPSTART="TCP","http://myesp8266.comlu.com",80\r\n

CONNECT

OK

  

AT+CIPSEND=93\r\n

OK

>

GET http://myesp8266.comlu.com/temp_post.php?temps=15 HTTP/1.0\r\n

Host: myesp8266.comlu.com\r\n\r\n`

Recv 93 bytes

SEND OK

+IPD,574:HTTP/1.1 302 Found Date: Tue, 09 May 2017 02:20:31 GMT Server: Apache Location: https://www.000webhost.com/migrate? utm_source=000&utm_medium=rdr&utm_campaign=old_panel_off&static=true Content-Length: 299 Connection: close Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>302 Found</title> </head><body> <h1>Found</h1> <p>The document has moved <a href="https://www.000webhost.com/migrate? utm_source=000&amp;utm_medium=rdr&amp;utm_campaign=old_panel_off&amp;static=true">here</a>.</p> </body></html> CLOSED

当我使用IE时,我会收到以下请求

  

http://myesp8266.comlu.com/temp_post.php?temps=15

response -> Notice: Undefined index: temperature in /storage/h9/116/1546116/public_html/temp_post.php on line 2 15 Temperature : Celcius

15 is what i expect and im receiving it good...

下面是来自fiddler的代码,我收到了好的

  

send ->

GET http://myesp8266.comlu.com/temp_post.php?temps=15 HTTP/1.0 Host: myesp8266.comlu.com

  

response ->

HTTP/1.1 200 OK Date: Tue, 09 May 2017 02:08:40 GMT Content-Type: text/html; charset=UTF-8 Connection: close Server: awex X-Xss-Protection: 1; mode=block X-Content-Type-Options: nosniff X-Request-ID: ce6759371cbb05088c5c954aa35de737

<br /> <b>Notice</b>: Undefined index: temperature in <b>/storage/h9/116/1546116/public_html/temp_post.php</b> on line <b>2</b><br /> 15<p>Temperature : Celcius </p>

哪里错了?尝试了许多可能的方式。但是只有ESP8266剩下的工作方式才能取得成功。

请帮忙。

谢谢

2 个答案:

答案 0 :(得分:1)

你的第一个AT命令建立了一个TCP连接,但包括http://,它可能不应该在这一点上它还不相关(我们只是打开一个套接字)

AT命令不正确:

AT+CIPSTART="TCP","http://myesp8266.comlu.com",80\r\n

更正了AT命令:

AT+CIPSTART="TCP","myesp8266.comlu.com",80\r\n

下一个问题是您的获取请求

主机名应仅在Host标题上指定,此行上也不需要协议,GET请求URL也应该相对于我认为的主机。

您的要求:

GET http://myesp8266.comlu.com/temp_post.php?temps=15 HTTP/1.0\r\n Host: myesp8266.comlu.com\r\n\r\n

更正请求

GET /temp_post.php?temps=15 HTTP/1.0\r\n Host: myesp8266.comlu.com\r\n\r\n

除了这两个变化之外,猜测AT+CIPSEND之后的发送长度也可能需要更新,甚至可能完全省略长度。

最后,您在temp_post.php中遇到了一个小问题,即通过更改错误报告级别或者如果您发布了一些我会查看的代码,您可以通知您: )。或者,如果你想要一个廉价且讨厌的修正前缀,无论变量是什么导致它@@$myTemps['temperature'](虽然肯定能更好地解决问题)

答案 1 :(得分:0)

简直美丽

我删除了http://

  

更正了AT命令:并按照您的提及进行了修改

AT+CIPSTART="TCP","myesp8266.comlu.com",80\r\n

像魅力一样工作..

啊啊......除了修改CIP开始以外,所有可能的方式尝试了。

  

1000感谢您的解决。

亲爱的,祝你好日子。