php接收arduino向服务器发来的请求

虽然简单,但初学者的我还是弄了一周,最后的成果是理清了一个概念问题。废话少说,先上代码。

1 if (client.connect(server, 80)) // 用Tomcat的默认8080端口
2 {
3 Serial.println("connected");
4 client.println("GET /yinjiaozhichuli.php?q=ethernet "); // 要传递的数据放在?后面,等号左边是变量名,// 等号右边是数值(一般都是字符型)
5 client.println();
6 } else {
7 Serial.println("connection failed");
8 }

这个是写在arduino里的部分代码,作用就是通过GET请求带着?后面的参数一起发到服务器。这里按理说是没有问题的,网上、书上全部都是标准格式的代码。

之后我在服务器端写了一个简单的PHP文件来处理这个请求:

 1 <?php
 2     if($_GET["q"])
 3     {
 4        $yinjiaozhi=$_GET["q"];       
 5     }
 6     else
 7     {
 8        $yinjiaozhi="error";
 9     }
10 12     echo "$yinjiaozhi"
13 ?>

这个只要运行的话,按照原计划是不是接到数据就输出q的数据?没接到就输出ERROR?一眼就看出问题的绝对是大神,对我这种小白来说却是百思不得其解了,运行结果却是这样的:

但是当我直接用浏览器发送请求时却成功了:

  什么鬼?和说好的不一样啊!!为啥找不到q呢?在arduino的引脚监视器里明明显示连接成功并且请求也发到服务器了啊。而且语句语法完全没有错啊,我开始怀疑人生了。

吊胃口的事情咱就不做了,我就直接说我怎么发现问题的吧,当我把php文件改成这样时:我加入了把q值写到

 1 <?php
 2     if($_GET["q"])
 3     {
 4        $yinjiaozhi=$_GET["q"];       
 5     }
 6     else
 7     {
 8        $yinjiaozhi="error";
 9     }
10     $stream = fopen("ttt.txt", "w+");
11     fwrite($stream, $yinjiaozhi);
12     echo "$yinjiaozhi"
13 ?>

再运行PHP文件时网页上还是和上图一样

但是在我的ttt.txt文件中却出现了数值:

 

这说明服务器确实收到了arduino发的请求信息,并可以对其发来的数据进行操作,那为什么网页上却显示不了信息呢?原因是这样的:

  php相当于一个信息处理器,作用就是将接收到的get请求中的数据保存入ttt.TXT文件并执行echo语句。当arduino向服务器发送请求时,服务器接受到了“q=arduino”这一信息。此时想看到结果的我急忙用浏览器打开php文件。php将服务器中储存的信息存入ttt.txt文件中(所以文件中有arduino字样),然后执行echo语。此时注意了,和php交互的此时是浏览器,而浏览器只是单纯的打开了PHP文件,并没有向服务器发出任何请求,所以网页上会显示找不到“q”的错误了。

  当我在打开php文件的时候同时输入请求时,php文件就会找到我从地址栏发送的请求信息并进行显示了。

注:(本人是初学者,以上均为个人理解,如果在逻辑上有问题请指正,但所列举的事件都是事实证明过的)。

转载于:https://www.cnblogs.com/hehejeson/articles/5966449.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值