#php #curl
Вопрос:
Я пытаюсь создать простой api, который отправит json в конечную точку с помощью curl и php. он выдает мне ошибку, в которой говорится, что тип носителя не поддерживается, и мне нужна помощь, чтобы понять, что я могу делать неправильно, вот код
<?php
$data = array("saleAmount"=>"2000","cashBack"=>"800","posUser"=>"John","tenderType"=>"SWIPE","currency"=>"RTGS","transactionId"=>'0001');
$payload = json_encode($data);
echo $payload;
// prepare curl
$ch = curl_init('http://localhost:9111/api/requests');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/jsonp',
'Content-Length: ' . strlen($payload))
);
// Submit the POST request
$result = curl_exec($ch);
echo json_encode($result);
// Close cURL session handle
curl_close($ch);
?>
Комментарии:
1. Должен ли ваш тип контента быть не application/json, а?
2. да, спасибо за это, исправил это в json, но это все равно дает мне тот же результат
3. Пожалуйста, поделитесь полным и точным сообщением об ошибке вместе с вашими попытками решить проблему. Кроме того, для этого может быть проще использовать библиотеку, подобную Guzzle, чтобы вам не приходилось возиться с конкретными настройками завитков
4. Ошибка, которую я получаю, — это статус»:415″,»ошибка»:» Неподдерживаемый тип носителя», и в нем отображается имя пути, на которое не удается отправить сообщение
5. Пожалуйста, добавьте все разъяснения к вашему вопросу, отредактировав его. Также поделитесь своими попытками решить проблему, так как никто ничего не знает об используемом вами API
Ответ №1:
Проблема в том, что ваш API ожидает другой тип носителя, чем тот, который вы предоставляете в своем поиске.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/415
Убедитесь, что ваш API поддерживает тип содержимого application/json
Ответ №2:
$url="";//path of api
$ch=curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json')
);
$data = array("saleAmount"=>"2000","cashBack"=>"800","posUser"=>"John","tenderType"=>"SWIPE","currency"=>"RTGS","transactionId"=>'0001');
$data=json_encode($data);
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
$response=curl_exec($ch);
print_r($response);die;
curl_close($ch);
Append your url in $url and check this once.