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

标签 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>

到目前为止一切顺利。现在我的网站上有一个 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>

即使我在没有参数的情况下尝试 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

关于php - 为什么ESP8266加载php URL时报DNS失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36275357/

相关文章:

java - 将文件保存在磁盘上

php - 在 php 浏览器中重启 mysql,权限问题?

c - 如何将 int 添加到先前创建的包含字符串的缓冲区

ssl - NodeMCU Lua Websockets 安全不适用于 2.0 基线

php - 自动页面刷新,无需重新加载整个页面

php - 分配一个变量,但不断得到 NULL

c - UDP 和 TCP 之间的同步

c - C中的多线程TCP服务器

c++ - esp8266网络开关问题

esp8266 - 是否有用于测试在 Arduino IDE 上编写的代码的 esp8266 模拟器?