CURL没有给我任何回应

时间:2017-01-26 20:29:59

标签: php curl

我正在使用PHP CURL进行RESTFUL API调用。这是我的功能

$datastr = '{"Params": { "Dawar Khan": "", "Email": "ali.zia.1991@gmail.com", "MobileNumber": "36566339", "UserType": "G0", "IDNumber": "881041106", "IDExpiry": "03/01/2022", "DOB": "03/03/1988" }, "AccountID": "SHIP2YOUTST", "SecureHash": "53019EB8CA831A8D170C016A6550033A5B74D1B1A45F832560300756A02DB3F9"}';
$url = 'https://myurl.com';

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_PORT, 443);
curl_setopt($ch, CURLOPT_POSTFIELDS, $datastr);
$result = curl_exec($ch);
curl_close($ch);

$json_result = json_decode($result, true);
print_r($json_result);

修改

将var_dump添加到结果中给了我这个。

  

string(2738)“

     

请求错误

     

服务器在处理请求时遇到错误。异常消息是'传入消息具有意外的消息格式'Raw'。操作的预期消息格式是'Xml','Json'。这可能是因为尚未在绑定上配置WebContentTypeMapper。有关更多详细信息,请参阅WebContentTypeMapper的文档。有关详细信息,请参阅服务器日志。

我怎么知道我的字符串已发布到网址并且响应已经到来? $ datastr必须是字符串或json?请指导我。感谢。

1 个答案:

答案 0 :(得分:4)

您需要添加此标头:

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Content-Length: ' . strlen($datastr))
); 

来自你的回复:

  

该操作的预期消息格式为“Xml' Json'”。

您收到的回复是说您使用的API需要 XML JSON 。将内容类型设置为一个或另一个应解决问题。