我正在使用 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?请指导我。谢谢。
您需要添加此标题:
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($datastr))
);
Run Code Online (Sandbox Code Playgroud)
从你的回应:
该操作的预期消息格式为“Xml”、“Json”。
您得到的响应表明您使用的 API 需要XML或JSON。将内容类型设置为一种或另一种应该可以解决问题。