CURL 没有给我任何回应

Ali*_*Zia 0 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);
Run Code Online (Sandbox Code Playgroud)

编辑

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

字符串(2738)“

请求错误

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

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

Fel*_*rte 5

您需要添加此标题:

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

从你的回应:

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

您得到的响应表明您使用的 API 需要XMLJSON。将内容类型设置为一种或另一种应该可以解决问题。