为什么ESP8266加载phpURL时报DNS失败?
Why does ESP8266 report DNS fail when loading php URL?
使用ESP8266并使用以下AT命令我可以成功获取网页:
AT+CIPSTART="TCP","www.somewebsite.com",80
AT+CIPSEND=80
> GET http://www.somewebsite.com HTTP/1.0
<I get a bunch of HTML here>
到目前为止一切顺利。现在我的网站上有一个 php 页面,它接受一些参数并相应地更新数据库中的 table。所以当我输入:
http://www.mywebsite.com/mypage.php?arg1=one&arg2=two
它成功更新了 table。现在当我尝试使用 ESP8266 做同样的事情时,我得到了一个 DNS 失败:
AT+CIPSTART="TCP","http://www.mywebsite.com/mypage.php?arg1=one&arg2=two",80
<get DNS fail here>
即使我在没有参数的情况下尝试 php 页面,我也会收到 DNS 失败:
AT+CIPSTART="TCP","http://www.mywebsite.com/mypage.php",80
<get DNS fail here>
有人知道这是怎么回事吗?难道是php页面不在80端口?如果是这种情况,我如何找出它所在的端口?
顺便说一句,如果我对我网站上的 html 页面执行相同的操作,它就可以正常工作。
编辑:
当我尝试这个时:
AT+CIPSTART="TCP","www.mywebsite.com",80
> GET /mypage.php?arg1=one,arg2=two
我得到这个输出:
错误 404 - 未找到
当我尝试时:
AT+CIPSTART="TCP","www.mywebsite.com",80
> GET http://www.mywebsite.com/mypage.php?arg1=one,arg2=two
我得到 www.mywebsite.com/index.html 的 html 代码,而不是 php 页面。
我也不确定 GET 命令中的 "HTTP/1.0" 是做什么的?
您不要将 URL 放在 AT+CIPSTART
行上,它只需要服务器的名称。 URL 的其余部分在 GET
之后。另外,如果你的服务器做虚拟主机,你需要发送一个 Host:
header 来告诉它使用哪个服务器名称。
AT+CIPSTART="TCP","www.mywebsite.com",80
> GET /mypage.php?arg1=one&arg2=two HTTP/1.1
> Host: www.mywebsite.com
使用ESP8266并使用以下AT命令我可以成功获取网页:
AT+CIPSTART="TCP","www.somewebsite.com",80
AT+CIPSEND=80
> GET http://www.somewebsite.com HTTP/1.0
<I get a bunch of HTML here>
到目前为止一切顺利。现在我的网站上有一个 php 页面,它接受一些参数并相应地更新数据库中的 table。所以当我输入:
http://www.mywebsite.com/mypage.php?arg1=one&arg2=two
它成功更新了 table。现在当我尝试使用 ESP8266 做同样的事情时,我得到了一个 DNS 失败:
AT+CIPSTART="TCP","http://www.mywebsite.com/mypage.php?arg1=one&arg2=two",80
<get DNS fail here>
即使我在没有参数的情况下尝试 php 页面,我也会收到 DNS 失败:
AT+CIPSTART="TCP","http://www.mywebsite.com/mypage.php",80
<get DNS fail here>
有人知道这是怎么回事吗?难道是php页面不在80端口?如果是这种情况,我如何找出它所在的端口?
顺便说一句,如果我对我网站上的 html 页面执行相同的操作,它就可以正常工作。
编辑: 当我尝试这个时:
AT+CIPSTART="TCP","www.mywebsite.com",80
> GET /mypage.php?arg1=one,arg2=two
我得到这个输出:
错误 404 - 未找到
当我尝试时:
AT+CIPSTART="TCP","www.mywebsite.com",80
> GET http://www.mywebsite.com/mypage.php?arg1=one,arg2=two
我得到 www.mywebsite.com/index.html 的 html 代码,而不是 php 页面。
我也不确定 GET 命令中的 "HTTP/1.0" 是做什么的?
您不要将 URL 放在 AT+CIPSTART
行上,它只需要服务器的名称。 URL 的其余部分在 GET
之后。另外,如果你的服务器做虚拟主机,你需要发送一个 Host:
header 来告诉它使用哪个服务器名称。
AT+CIPSTART="TCP","www.mywebsite.com",80
> GET /mypage.php?arg1=one&arg2=two HTTP/1.1
> Host: www.mywebsite.com