html tool

2018年5月2日星期三

web_custom_request "EncType=application/x-www-form-urlencoded",



参考:
https://blog.csdn.net/ryu2003/article/details/51886812
https://imququ.com/post/four-ways-to-post-data-in-http.html

[问题描述]
测试用curl -d "a=1.com&q=x.com" "http://12.12.12.12/api"
返回正常
但是用 web_custom_request 的json就无法识别 a

[解决]

application/x-www-form-urlencoded

这应该是最常见的 POST 提交数据的方式了。浏览器的原生
表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。请求类似于下面这样(无关的请求头在本文中都省略掉了):
BASHPOST http://www.example.com HTTP/1.1
Content-Type: application/x-www-form-urlencoded;charset=utf-8

title=test&sub%5B%5D=1&sub%5B%5D=2&sub%5B%5D=3
首先,Content-Type 被指定为 application/x-www-form-urlencoded;其次,提交的数据按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL 转码。大部分服务端语言都对这种方式有很好的支持。例如 PHP 中,$_POST['title'] 可以获取到 title 的值,$_POST['sub'] 可以得到 sub 数组。
很多时候,我们用 Ajax 提交数据时,也是使用这种方式。例如 JQuery 和 QWrap 的 Ajax,Content-Type 默认值都是「application/x-www-form-urlencoded;charset=utf-8」。


原因是非json的提交
        web_custom_request("web_custom_request",
                         "URL=http://12.12.12.12/api",
                         "Method=POST",
                         "Resource=0",
                         "RecContentType=text/html",
                         "Referer=",
                         "Snapshot=t2.inf",
                         "Mode=HTML",
                         "EncType=application/x-www-form-urlencoded", 
                         "Body=a=1.com&q=x.com",
                          LAST);

    没有评论:

    发表评论