为什么ESP8266加载php URL报DNS失败?

Ara*_*uhi 1 php tcp esp8266

使用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>
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切都很好。现在,我的网站上有一个php页面,该页面带有一些参数并相应地更新了数据库中的表。所以当我输入:

http://www.mywebsite.com/mypage.php?arg1 = one&arg2 = two

它成功更新了表。现在,当我尝试使用ESP8266进行相同操作时,出现DNS失败:

AT+CIPSTART="TCP","http://www.mywebsite.com/mypage.php?arg1=one&arg2=two",80
<get DNS fail here>
Run Code Online (Sandbox Code Playgroud)

即使我尝试不带参数的php页面,我也会收到DNS失败:

AT+CIPSTART="TCP","http://www.mywebsite.com/mypage.php",80
<get DNS fail here>
Run Code Online (Sandbox Code Playgroud)

有人知道发生了什么吗?可能是php页面不在端口80上吗?如果是这样,我如何找出它在哪个端口上?

顺便说一句,如果我对网站上的html页面执行相同操作,则效果很好。

编辑:当我尝试这样做:

AT+CIPSTART="TCP","www.mywebsite.com",80
> GET /mypage.php?arg1=one,arg2=two
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

未找到错误404

当我尝试:

AT+CIPSTART="TCP","www.mywebsite.com",80
> GET http://www.mywebsite.com/mypage.php?arg1=one,arg2=two
Run Code Online (Sandbox Code Playgroud)

我得到的是www.mywebsite.com/index.html的html代码,而不是php页面。

我也不确定GET命令中的“ HTTP / 1.0”是做什么的?

Bar*_*mar 5

您无需将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
Run Code Online (Sandbox Code Playgroud)