curl设置CURLOPT_HTTPHEADER请求头

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));

或者以数组格式时:

CURLOPT_HTTPHEADER => array('Content-Type: application/x-www-form-urlencoded')

Content-Type

application/json(其实和text/plain都是一样的,json只是为了告诉接收者可以直接json解码) 对应postman上的RAW。

application/x-www-form-urlencoded 是form表单(enctype参数)的默认编码方式,参数用&符号连接。get请求直接拼在URL后面,post请求参数在body里面,需要key=value&key=value这种,也就是需要http_build_query

multipart/form-data 当form需要上传文件的时候,就要将enctype设置为这个属性值了,curl在使用 multipart/form-data 这种方式传递的时候,参数需要是数组的格式(数组格式会自动变为multipart/form-data编码), 文件对于php小于5,5版本的,使用 @文件全路径 表示,不加请求头时默认就是这个格式,但是对于大于php5.5的版本,需要curlfile方法来new一个特殊类型的对象(curl_file_create('文件的全路径'))。然后将这个对象放进请求的参数里面。

不加头部则默认为multipart/form-data格式!

multipart/form-data用array格式传送,
content-type为x-www-form-urlencoded时用key=value&key=value(键值对)的形式传送。

curl:在接收端,发现使用POST是接收不到数据的,当然_REQUEST也是一样,那么我们传的JSON数据哪里去了呢?怎么才能接收到传递的JSON数据?
使用如下方法:
$GLOBALS[‘HTTP_RAW_POST_DATA’];

file_get_contents('php://input');

你可能感兴趣的:(每日总结,php)