Не удается отправить json в конечную точку с помощью curl

#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.