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

本文记录了一位初学者使用Arduino通过GET请求向PHP服务器发送数据的过程,遇到的问题及解决办法。通过Arduino发送请求,PHP接收并在文件中写入数据,但浏览器直接打开PHP文件时未显示正确信息。原因在于浏览器未发送请求,导致PHP无法找到GET参数。在正确发送请求后,服务器能正确处理Arduino的数据。
摘要由CSDN通过智能技术生成

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

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 <?php2 if($_GET["q"])3 {4 $yinjiaozhi=$_GET["q"];5 }6 else7 {8 $yinjiaozhi="error";9 }10 12 echo "$yinjiaozhi"13 ?>

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

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

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

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

1 <?php2 if($_GET["q"])3 {4 $yinjiaozhi=$_GET["q"];5 }6 else7 {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文件就会找到我从地址栏发送的请求信息并进行显示了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值