2013-09-05 7 views
11

का उपयोग करते समय मैं curl का उपयोग कर एपीआई के json डेटा पोस्टिंग कर रहा हूँ - मैं किसी भी उत्पादन नहीं हो रही है। मैं प्राप्तकर्ता को ईमेल आमंत्रण भेजना चाहता हूं।एपीआई के पोस्ट JSON डेटा कर्ल

$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" : "[email protected]", 
     "recipientEmail" : "[email protected]", 
     "comment"  : "Invitation", 
     "forceDebitCard" : "false" 
    } 
] 

और बुला समारोह है: https://api.payquicker.com/Help/Api/POST-api-SendInvitation

उत्तर

22

जोड़ने का प्रयास करें curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
:

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

यह API है

<?php 

$data = array(
    "authorizedKey" => "abbad35c5c01-xxxx-xxx", 
    "senderEmail" => "[email protected]", 
    "recipientEmail" => "[email protected]", 
    "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); 

?> 

प्रतिक्रिया मैं मिलता है:: और $post

के कार्यान्वयन http_build_query($post) बदलते

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

लेकिन शायद यह मान्य डेटा के साथ काम करेंगे ....

संपादित करें : एक्सएमएल, पोस्टिंग के लिए यह रूप में एक ही है

$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>'; 

तो: अपनी साइट, एक स्ट्रिंग में छोड़कर पर

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

और::

sendPostData($url_send, $xml) 
+0

ठीक डायलन बीमार धन्यवाद कोशिश – ArkNet

+0

बहुत मैं सिर्फ "के साथ? AuthorizedKey = xxxxx_ URL से संलग्न _please है कि" उनके एपीआई पर पढ़ा, मैं भी –

+0

ऊपर कोड बदल देंगे मैं अपने प्रमाणीकरण कुंजी के साथ कि xxxx आवंटित करने के लिए की जरूरत है ?? – ArkNet

13

आप शीर्ष लेख जोड़ने के लिए अन्यथा

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 

.. ।

HTTP स्थिति 415 - असमर्थित मीडिया प्रकार

... हो सकता है।

संबंधित मुद्दे