为什么ESP8266在加载php URL时报告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页面,它接受一些参数并相应地更新数据库中的表。所以当我输入:

http://www.mywebsite.com/mypage.php?arg1=一个&arg2=两个

它成功地更新了表。现在,当我尝试使用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:标头来告诉它要使用哪个服务器名称。

AT+CIPSTART="TCP","www.mywebsite.com",80
> GET /mypage.php?arg1=one&arg2=two HTTP/1.1
> Host: www.mywebsite.com