我正在将这个API适配器用于POST数据我们的OMS(订单管理系统)。而且我一直收到这个错误。我不知道如果它真的是一个错误,因为适配器已连接。 POST是问题所在。我正在使用JSON和cURL来传递要更新的数据。所以这是我的代码:
$data = array(
'package' => array(
'tracking_number' => '735897086',
'package_status' => 'failed',
'failed_reason' => 'other1',
'update_at' => '2013-11-22 09:58:39'
)
);
这就是我发布它的方式。
$postdata = "apikey=$apikey&method=$method&data=$check";
$ch = curl_init();
//SSL verification fixed with this two codes
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt_array(
$ch,
array(
CURLOPT_URL => $url.'/webservice/',
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_VERBOSE => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => $postdata,
CURLOPT_HTTPHEADER => array('Content-type: application/x-www-form-urlencoded')
)
);
$result = curl_exec($ch);
这是我测试连接的代码,并检查POSTing是否成功。
if(curl_exec($ch) === false) { echo 'Curl error: ' . curl_error($ch); } else { echo 'Operation completed without any errors'; }
$result = curl_exec($ch);
echo $result;
curl_close($ch);
我真的不知道为什么我一直得到“不正确的参数服务”。我已经查看了文档,参数是正确的。 :(
答案 0 :(得分:0)
我确实认为这是因为你的POST变量是一个数组中的一个数组,所以你最终试图用你当前的方法做的事情是无效的。
在CURL中设置$ data之前,请尝试运行以下命令:
$data = http_build_query($data);
有关详细信息,请参阅PHP definition of http_build_query
答案 1 :(得分:0)
我忘了添加这个。我将其编码为JSON,这就是我使用数组的原因。
$check=json_encode($data);
echo $check;
$postdata = "method=$method&data=$check&apikey=$apikey";
$ch = curl_init();
在收到响应以检查它是否以JSON编码之前,我首先回应它。然后我收到了这个错误:
{ “包”:{ “ORDER_NUMBER”: “200118788”, “package_number”: “200118788-4274”, “TRACKING_NUMBER”: “735897086”, “程序包状态”: “失败”, “failed_reason”: “其他1” ,“update_at”:“2013-08-06 17:02:14”}}操作已完成且没有任何错误{“OmsSuccessResponse”:false,“message”:“发送到服务的参数不正确”,“package_status”:null} < / p>