Проводка данных JSON в API с использованием CURL

Когда я отправляю данные json в API с помощью curl – я не получаю никакого вывода. Я бы хотел отправить приглашение по электронной почте получателю.

 $url_send ="http://api.address.com/SendInvitation?"; $str_data = json_encode($data); function sendPostData ($url, $post) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post)); return curl_exec($ch); } 

И вот JSON $str_data

 [ { "authorizedKey" : "abbad35c5c01-xxxx-xxx", "senderEmail" : "myemail@yahoo.com", "recipientEmail" : "jaketalledo86@yahoo.com", "comment" : "Invitation", "forceDebitCard" : "false" } ] 

И вызывающая функция:

 $response = sendPostData($url_send, $str_data); 

Это API: https://api.payquicker.com/Help/Api/POST-api-SendInvitation

Попробуйте добавить curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
И изменение http_build_query($post) на $post

Реализация:

 <?php $data = array( "authorizedKey" => "abbad35c5c01-xxxx-xxx", "senderEmail" => "myemail@yahoo.com", "recipientEmail" => "jaketalledo86@yahoo.com", "comment" => "Invitation", "forceDebitCard" => "false" ); $url_send ="http://api.payquicker.com/api/SendInvitation?authorizedKey=xxxxx"; $str_data = json_encode($data); function sendPostData($url, $post){ $ch = curl_init($url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS,$post); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); $result = curl_exec($ch); curl_close($ch); // Seems like good practice return $result; } echo " " . sendPostData($url_send, $str_data); ?> 

Ответ я получаю:

 {"success":false,"errorMessage":"Object reference not set to an instance of an object.","status":"N/A"} 

Но, возможно, он будет работать с достоверными данными ….

Изменить: для публикации xml это то же самое, что и на их сайте, за исключением строки:

 $xml = ' <SendInvitationRequest xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/PQApi.Models"> <authorizedKey>80c587b9-caa9-4e56-8750-a34b17dba0a2</authorizedKey> <comment>sample string 4</comment> <forceDebitCard>true</forceDebitCard> <recipientEmail>sample string 3</recipientEmail> <senderEmail>sample string 2</senderEmail> </SendInvitationRequest>'; 

Затем:

 sendPostData($url_send, $xml) 

Вы должны добавить заголовок:

 $headers= array('Accept: application/json','Content-Type: application/json'); 

А также:

 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 

В противном случае …

Статус HTTP 415 – Неподдерживаемый тип носителя

… может случиться.