2011-04-14 10 views
7

लौट रही है मुझे कुछ कठिनाइयों का सामना करना पड़ रहा है जो एक जेएसआई ऑब्जेक्ट को आरईएसटी का उपयोग करता है। मैं curl का उपयोग करने के लिए नया हूं, लेकिन मैंने अपनी समस्या का उत्तर खोजने की कोशिश करने के लिए पूरी तरह से खोज की है लेकिन कम हो गया है। मेरा कर्ल अनुरोध हमेशा झूठा लौट रहा है। मुझे पता है कि यह मेरी जेसन ऑब्जेक्ट पोस्ट नहीं कर रहा है क्योंकि मुझे अभी भी यूआरएल से प्रतिक्रिया मिल जाएगी। मेरा कोड नीचे है।curl PHP रीस्टफुल सेवा हमेशा FALSE

<?php 

//API KEY = APIUsername 
//API_CODE = APIPassword 
$API_Key = "some API key"; 
$API_Code = "some API code"; 
$API_email = "[email protected]"; 
$API_password = "ohhello"; 
$url = "http://someURL.com/rest.svc/blah"; 


$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_URL, $url); 
header('Content-type: application/json'); 
$authData = "{\"APIUsername\":\"$API_Key\",\"APIPassword\":\"$API_Code\",\"EmailAddress\":\"$API_email\",\"Password\":\"$API_password\"}"; 
curl_setopt($ch, CURLOPT_POSTFIELDS, $authData); 

//make the request 
$result = curl_exec($ch); 
$response = json_encode($result); 
echo $response; 

curl_close() 
?> 

$ प्रतिक्रिया रिटर्न सिर्फ "गलत"

किसी भी विचार?

उत्तर

24

$response संभवतः झूठा है क्योंकि curl_exec()$result में झूठी (यानी विफलता) लौटाता है। Curl त्रुटि देखने के लिए curl_error($ch) (curl_exec पर कॉल करने के बाद) को इको करें, अगर यह समस्या है।

एक अलग नोट पर, मुझे लगता है कि आपका CURLOPT_POSTFIELDS एक अवैध प्रारूप में है। आप उस पर JSON स्ट्रिंग पास नहीं करते हैं।

This parameter can either be passed as a urlencoded string like 'para1=val1&para2=val2&...' or as an array with the field name as key and field data as value.

-- PHP docs for curl_setopt()


अद्यतन

त्वरित तरीका SSL त्रुटि से बचने के लिए इस विकल्प को जोड़ने के लिए है:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

आप एक SSL सत्यापन त्रुटि मिलती है क्योंकि cURL, ब्राउज़रों के विपरीत, विश्वसनीय प्रमाणपत्र प्राधिकरण (सीएएस) की प्रीलोडेड सूची नहीं है, इसलिए डिफ़ॉल्ट रूप से कोई SSL प्रमाणपत्र विश्वसनीय नहीं है। त्वरित समाधान उपर्युक्त पंक्ति का उपयोग करके सत्यापन के बिना प्रमाण पत्र स्वीकार करना है। बेहतर समाधान केवल प्रमाण पत्र (एस) या सीए (एस) को मैन्युअल रूप से जोड़ना है जिसे आप स्वीकार करना चाहते हैं। अधिक जानकारी के लिए this article on cURL and SSL देखें।

+0

curl_error ($ ch) पर मुझे नीचे दिया गया संदेश मिलता है। क्या यह यूआरएल के साथ एक समस्या है जिसे मैं पोस्ट करने की कोशिश कर रहा हूं? "एसएसएल प्रमाणपत्र समस्या, सत्यापित करें कि सीए प्रमाण ठीक है। विवरण: त्रुटि: 140 9 0086: एसएसएल दिनचर्या: SSL3_GET_SERVER_CERTIFICATE: प्रमाण पत्र सत्यापित विफल" – stekrose

+1

मुझे लगता है कि यह काफी आम है। 'Curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, false) आज़माएं;'। – Wiseguy

+0

सही काम किया। सहायता के लिए धन्यवाद! – stekrose