我试图从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&utm_medium=rdr&utm_campaign=old_panel_off&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剩下的工作方式才能取得成功。
请帮忙。
谢谢
答案 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感谢您的解决。