标签:curl 方式 [] 组成 length value 测试 问题 ring
1 接口开发注意传参问题: 2 3 php中的curl()函数进行post请求的时候,传递数据的格式可以有以下几种方式: 4 5 (1):由参数拼接而成的key=>value键值对字符串。形如以下: name=xxx&age=23$sex=1 6 7 这种请求参数默认是按照application/x-www-form-urlencoded进行编码的。 8 9 (2):由参数组成的key=>value键值对数组(只能是一维数组,更高维度的数组会报错)。 10 11 形如以下格式: 12 [ name="xxx" , age = 23 , sex = 男 ] 13 有两种方式可以来处理: 14 1.将多维数组进行http_build_query()进行处理,等到一个key=>value键值对格式的字符串。 15 $data = [ 16 "msg"=>"这是一条测试数据", 17 "xxx" => "yyyy", 18 "msg_data" => [ 19 "name"=>"sui", 20 "age"=>99, 21 "sex"=>"男", 22 "content"=>[ 23 1,2,3 24 ] 25 ], 26 ]; 27 $str =http_build_query($data); 28 这种方式也是通过application/x-www-form-urlencoded进行编码的,在接收方可以通过$_POST直接获取。 29 2.将多维数组转换为json格式的字符串,对字符串进行application/json格式编码,在接收方通过file_get_contents(“php://input”)或者$GLOBALS[‘HTTP_RAW_POST_DATA‘]的方式获取传递过来的json格式的字符串,然后将json格式的字符串转换为数组进行处理。 30 $data = []; 31 $data_string = json_encode($data); 32 ..... 33 //设置header信息 34 curl_setopt($ch, CURLOPT_HTTPHEADER, array( 35 ‘Content-Type: application/json‘, 36 ‘Content-Length: ‘ . strlen($data_string)) 37 ); 38 注意:对于application/json格式编码的数据,$_POST是不能直接获取的,需要通过file_get_contents(“php://input”)或者$GLOBALS[‘HTTP_RAW_POST_DATA‘]的方式获取。 39
标签:curl 方式 [] 组成 length value 测试 问题 ring
原文地址:http://www.cnblogs.com/boundless-sky/p/6261386.html