cURL发布数据未发送

时间:2014-06-16 10:52:26

标签: php curl laravel

我正在尝试通过cURL发送POST数据但是它没有发送数据,但是当我发送它们作为GET变量发送时,是否有人知道问题可能是什么?

curl_setopt_array($ch, array( 
    CURLOPT_URL => "local.new.api.test.com/authenticate/"
)); 

$data = array(
    'username'  =>  'test',
    'password'          =>  'test'
);  

$data_string = json_encode($data);  

curl_setopt($ch, CURLOPT_POST, TRUE);                                                                   
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);   
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);    

1 个答案:

答案 0 :(得分:1)

CURLOPT_POSTFIELDS不是json编码的字符串。它需要一个查询字符串(类似于问号后面的URL-s中的查询字符串)。

这应该有效:

$data_string = http_build_query($data, '', '&');

或者你可以让cURL扩展来做脏工作并传递一个带有键值对的数组作为值:

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

来自PHP.net

此参数既可以作为urlencoded字符串传递,例如'para1 = val1& para2 = val2& ...',也可以作为数组传递,字段名称为键,字段数据为值。如果value是数组,则Content-Type标头将设置为multipart / form-data。