我正尝试使用来自arduino的put方法将数据(json格式的字符串)作为参数发送到apache http服务器。服务器的回复是418茶壶回复。
这是我第一个使用TCP请求、HTTP、PHP的项目-所以我在这个方向上没有坚实的背景。
字符串:

{%221%22:%22FE005F719444%22,%222%22:%22ooooooooooxo%22,%223%22:%22ooooooooooxo%22}

TCP请求:
PUT /proxyJson/index.php/?YOUR_data={%221%22:%22FE005F719444%22,%222%22:%22ooooooooooxo%22,%223%22:%22ooooooooooxo%22} HTTP/1.1 200 OK
Host: 192.168.xx.xxx
User-Agent: 192.168.xx.xxy
Content-Type: text/html; charset=iso-8859-1
Content-Length: 0
Connection: close

apache访问日志:
192.168.xx.xxy - - [27/Dec/2016:19:50:22 +0200] "GET /proxyJson/index.php/?YOUR_data=    {%221%22:%22FE005F719444%22,%222%22:%22ooooooooooxo%22,%223%22:%22ooooooooooxo%22} HTTP/1.1" 400 226

如果直接在浏览器中输入数据,脚本就可以正常工作。
我错过了什么?
感谢您的回复和支持。
乔治

最佳答案

你的要求有错误。
第一行应该是:

PUT /proxyJson/index.php/?YOUR_data={%221%22:%22FE005F719444%22,%222%22:%22ooooooooooxo%22,%223%22:%22ooooooooooxo%22} HTTP/1.1

没有:
200 OK

另外,我建议在请求正文中发送您的数据。
所以你的要求是:
PUT /proxyJson/index.php HTTP/1.1
Host: 192.168.xx.xxx
User-Agent: 192.168.xx.xxy
Content-Type: application/json
Content-Length: 58
Connection: close

{"1":"FE005F719444","2":"ooooooooooxo","3":"ooooooooooxo"}

这就是Content-TypeContent-Length标题的目的。

关于php - Apache http服务器回复418(“我是茶壶”)-json参数,使用来自arduino的PUT的TCP请求,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41350385/

10-16 16:16
查看更多