POST JSON和PHP cURL

我有以下的PHP代码

curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_USERAGENT, $this->_agent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $this->_headers);
curl_setopt($ch, CURLOPT_ENCODING , "gzip");
curl_setopt($ch, CURLOPT_VERBOSE, false); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_TIMEOUT,  120);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_COOKIEFILE, $this->_cookie_file_path);
curl_setopt($ch, CURLOPT_COOKIEJAR, $this->_cookie_file_path);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"folderId":"1","parameters":{"amount":3,"ascending":false,"offset":0,"sort":"date"}}');
curl_setopt($ch, CURLOPT_POST, 1); 

但我不明白为什么不工作。 我发布JSON的API说,没有收到参数。 我的代码有什么问题吗? 我认为整个技巧在JSON参数上......我不确定如何发送它们,因为我通常看不到任何“nave-> value”与http分析器,因为它通常以简单的形式出现...只是没有任何“名称”的JSON代码。


你可以使用这个和替换

curl_setopt($ch, CURLOPT_POSTFIELDS, '{"folderId":"1","parameters":{"amount":3,"ascending":false,"offset":0,"sort":"date"}}');

用这个

$Parameters = array(
    'MerchantCode'        => $MerchantCode,
    'PriceValue'          => $amount,
    'ReturnUrl'           => $callback,
    'InvoiceNumber'       => $resnum,
);

    curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($Parameters));

您尚未设置内容类型,因此发布的数据将作为表单数据发送。 尝试将内容类型设置为application / json。

如果这不起作用,请尝试用数组包装json字符串。


如果:你使用post方法,你应该知道:

CURLOPT_POST TRUE做一个普通的HTTP POST。 此POST是普通的应用程序/ x-www-form-urlencoded类型,最常用的是HTML表单。

@see http://php.net/manual/en/function.curl-setopt.php

所以:你可以这样做:

$ar_form = array('name'=>'PHPJungle','age'=>66,'gender'=>'male');
$poststr = http_build_query($ar_form ); # important

$options[CURLOPT_HTTPGET] = false;
$options[CURLOPT_POST] = true;
$options[CURLOPT_POSTFIELDS] = $poststr ; //default type:application/x-www-from-urlencoded

curl_setopt_array ( $ch, $options );
# @todo your other codes

这是我使用了很长时间的课程。该课程基于PHP cURL。 它支持GET / POST,HTTP / HTTPS。

@请参阅https://github.com/phpjungle/iHttp/

链接地址: http://www.djcxy.com/p/48883.html

上一篇: POST JSON with PHP cURL

下一篇: How to use PHP cURL to send images with the correct Content