2010-02-21 11 views
6

मुझे नियमित URL एन्कोडेड क्वेरी स्ट्रिंग के साथ EC2 क्वेरी API पर एक सरल GET अनुरोध करने की आवश्यकता है। प्रोटोकॉल HTTPS है। मैं PHP के कर्ल की मदद से अनुरोध कैसे भेजूं।PHP का कर्ल: HTTPS से कैसे कनेक्ट करें?

उत्तर

4

एक एचटीटीपीएस यूआरएल में कर्ल के माध्यम से अनुरोध भेजना, PHP कोड के संदर्भ में स्वयं ही कठिन नहीं है।

कुछ इस तरह करना चाहिए बिल्कुल ठीक (मैं सिर्फ अपनी मशीन, विंडोज, पीएचपी 5.3 पर कोड के इस भाग की कोशिश की):

$url = 'https://.../...'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$data = curl_exec($ch); 
curl_close($ch); 

echo $data; 

और यह ठीक परिणाम आउटपुट: एक ही बात मुझे मिलता है https:// यूआरएल तक पहुंचने का प्रयास करते समय मेरे ब्राउज़र में; निश्चित रूप से सीएसएस को छोड़कर।


आप curl_setopt समारोह के मैनुअल पृष्ठ पर एक नज़र लेने के लिए चाहते हो सकता है: विकल्पों में से एक बहुत कुछ कर रहे हैं, और उन में से कुछ यहाँ उपयोगी हो सकता है, अपने विशिष्ट मामले :-)

में, मैंने CURLOPT_SSL_VERIFYPEER और CURLOPT_SSL_VERIFYHOST का उपयोग किया; सुनिश्चित नहीं है कि आपको अमेज़ॅन के साथ उन लोगों की आवश्यकता होगी, लेकिन मुझे उनका उपयोग करना पड़ा, अन्यथा कोड का यह हिस्सा काम नहीं करता था - लेकिन यह इस तथ्य से संबंधित हो सकता है कि मैं जिस प्रमाणपत्र का उपयोग कर रहा हूं वह स्वयं हस्ताक्षरित है ... उन लोगों के साथ और उसके बिना प्रयास करें, और यदि आपको उनकी आवश्यकता हो तो आपको तुरंत पता चल जाएगा।

+0

यूआरएल http: // ...? – Sarfraz

+0

@ सर्फ्राज़> ergh, damn copy-paste * (मैंने अपने ब्राउजर से एक यूआरएल चिपकाया, बिना किसी ध्यान के इसे 'पिछले' में इस्तेमाल नहीं किया क्योंकि यह मेरे पिछले सर्वर पर इस्तेमाल किया गया था) ;;; मैंने अपना जवाब सही करने के लिए संपादित किया है ;; टिप्पणी के लिए धन्यवाद :-) –

+0

आपका स्वागत है :) – Sarfraz

12

उदाहरण:

$url = "https://example.com"; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 

$result = curl_exec($ch); 
curl_close($ch); 

print_r($result); 

CURLOPT_SSL_VERIFYPEER

जांच करें कि सहकर्मी प्रमाण पत्र मान्य है या अमान्य/समाप्त हो गई है।

CURLOPT_SSL_VERIFYHOSTphp manual से उद्धृत:

1 एसएसएल सहकर्मी प्रमाण पत्र में एक आम नाम के अस्तित्व की जाँच करने के। 2 से एक आम नाम के अस्तित्व की जांच करें और यह भी सत्यापित करें कि यह होस्टनाम प्रदान करता है।

+0

क्या आप वर्णन कर सकते हैं कि SSL_VERIFYPEER और SSL_VERIFYHOST क्यों आवश्यक हैं? –

+0

मैंने अपना जवाब संपादित किया। – rogeriopvl

2

यदि आप प्रमाण पत्र को अंधाधुंध रूप से स्वीकार करने के लिए कर्ल को कॉन्फ़िगर करना चाहते हैं तो आप CURLOPT_SSL_VERIFYPEER विकल्प को गलत पर सेट कर सकते हैं।

$url = 'https://www.example.com/abc'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

// Blindly accept the certificate 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

$response = curl_exec($ch); 
curl_close($ch); 

var_dump($response); 
1

आप इस कार्य में सहायता के लिए ज़ेंड फ्रेमवर्क और कर्ल एडाप्टर का भी उपयोग कर सकते हैं। विवरण here

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