我正在尝试使用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
如果直接在浏览器中输入数据,脚本就可以正常工作。
我错过了什么? 感谢您的回复和支持。
乔治
答案 0 :(得分:0)
您的请求中存在错误。 第一行应该是:
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-Type
和Content-Length
标题的目的。