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

GET not possible in esp8266 wtih AT commands

我正在尝试通过我的 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 剩余的工作方式很好。

请帮忙。

谢谢

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

不正确的AT命令:

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

修改后的AT命令:

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

下一个问题是你的get请求

主机名可能只应在 Host header 上指定,此行也不需要协议 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

除了这 2 处更改外,猜测这是 AT+CIPSEND 之后的发送长度,因此可能也需要更新它,甚至可能完全忽略该长度。

最后,您在 temp_post.php 中遇到了一个小问题,它会发出通知,您可以通过更改错误报告级别来解决此问题,或者如果您 post 一些代码,我会有一个看 :)。或者,如果你想要一个廉价而讨厌的修复前缀,无论变量是什么导致它带有 @@$myTemps['temperature'] (尽管解决这个问题肯定更好)

简直太美了

我已经删除了http://

Corrected AT command: and modified as you mentioned

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

像魅力一样工作..

啊啊啊啊啊啊啊啊啊啊啊啊..尝试了所有可能的方法除了修改 CIP 启动。

1000 thanks for resolving.

亲爱的你好。