2011-03-31 15 views
7

मैं php/xml/json और अन्य सभी चीज़ों को सीख रहा हूं और मैं कुछ चीजों के लिए एपीआई के माध्यम से जा रहा था। उनके पास दस्तावेज हैं लेकिन मुझे अभी भी एपीआई का काम नहीं मिलता है। वे आपको एक जीईटी लिंक और एपीआई कुंजी देते हैं, मुझे पता है कि आपको एपीआई कुंजी को अनुरोध लिंकवेब एक्सएमएल/जेएसओएन एपीआई के साथ इंटरफ़ेस कैसे करें?

मैं इस लिंक को कैसे कॉल करूं? और इसका मतलब क्या है जब यह आपको नमूना प्रतिक्रिया देता है?

क्या आपको अनुरोध सही होने पर प्रतिक्रिया आनी चाहिए?

मैं थोड़ा सा मूर्खतापूर्ण हूं?

धन्यवाद

उत्तर

15

पीएचपी में आप कुछ इस तरह हो सकता है:

// EDIT: only need to use urlencode() on user supplied variables 
//$url = urlencode("http://xyz.com/api?apikey=foo&v1=bar&v2=baz"); 
$url = "http://xyz.com/api?apikey=foo&v1=bar&v2=baz"; 
$response = file_get_contents($url); 

$response जो कुछ xyz.com outputted जब आप $url पहुँचा के एक स्ट्रिंग में शामिल होंगे (यह अगर तुम $url दौरा आप देखना होगा क्या है सीधे)।

आपकी अगली नौकरी $response को इसके डेटा संरचना (जैसे एक्सएमएल, जेएसओएन, आदि) के आधार पर पार्स करना होगा ताकि यह आपके शेष कोड द्वारा उपयोग योग्य हो।

एक्सएमएल या जेएसओएन पार्स करने के लिए कई PHP पुस्तकालय हैं। निजी तौर पर, मैं SimpleXMLElement और json_decode() का उपयोग करना पसंद करता हूं जो PHP 5> = 5.2.0 के साथ शामिल है।

एपीआई के आधार पर, यह शायद आपको $url अनुरोध को समझ में नहीं आता है, तो यह आपको कुछ प्रकार का त्रुटि कोड/प्रतिक्रिया संरचना भेज देगा, जिसे आप प्रतिक्रिया का विश्लेषण करने के बाद जांच सकते हैं।

यदि $response झूठा रिटर्न देता है, तो आमतौर पर $url से संचार करने में कुछ त्रुटि हुई थी।

मुझे पता चला कि इन XHR अनुरोधों के बारे में सोचने का एक सहज तरीका यह है कि आप एक फ़ंक्शन (एपीआई यूआरएल) में तर्क (GET पैरामीटर) पास कर रहे हैं। और एपीआई यूआरएल की प्रतिक्रिया एक समारोह से रिटर्न स्टेटमेंट की तरह है।

अद्यतन: के रूप में टिप्पणी में ओपी ने सुझाव दिया Groupon के लिए

एपीआई उदाहरण:

$apikey = "client_id=abcd1234567890"; 
$division = "division_id=chicago"; 
$url = "http://api.groupon.com/v2/deals?" . implode("&", array($apikey, $division)); 
$response = file_get_contents($url); 
$deals = json_decode($response, true); 

foreach($deals['deals'] as $deal){ 
    $format = 'Deal: <a href="%s">%s</a><br/>'; 
    echo sprintf($format, $deal['dealURL'], $deal['announcementTitle']); 
} 

ऊपर कोड सभी सौदा खिताब और शिकागो क्षेत्र के लिए यूआरएल की एक सूची का प्रिंट आउट होगा। यदि आप ग्रुपन एपीआई पेज पर Sample JSON Response अनुभाग देखते हैं, तो यह आपको संपूर्ण डेटा संरचना देगा जो सहयोगी सरणी $deals पर मैप किया जाएगा।

यदि एपीआई के GET पैरामीटर में से कोई भी उपयोगकर्ता द्वारा प्रदान किया जाता है (उदा। वेब फॉर्म से), तो आप $division = "division_id=" . urlencode($user_input); जैसे कुछ करना चाहेंगे।

+1

और आप अलग-अलग चरणों में विभिन्न शिक्षाओं को तोड़ सकते हैं।Php से एपीआई कॉल करने के बजाय (त्रुटि के दो स्रोत होने के बाद) ब्राउज़र में एपीआई कॉल का परीक्षण करें (यदि आपको नहीं पता है, तो जीईटी तब होता है जब यूआरएल में वेरिएबल्स जोड़ दिए जाते हैं, जैसे कि डिगिलैंड के उदाहरण में) ताकि आप कर सकें जब तक आप प्रतिक्रिया प्राप्त नहीं कर लेते तब तक टिंकर करें, और तब PHP में जाएं जहां आप इसके साथ कुछ करते हैं –

+0

ओओ धन्यवाद धन्यवाद :) – hellomello

+0

मैंने एपीआई के साथ ऐसा करने की कोशिश की, लेकिन urlencode काम नहीं करता है। मैंने इसे बंद कर लिया और अब मुझे तार और सामान मिल रहा है, लेकिन कोई छवि या कुछ और नहीं। बस साइट से पाठ (मैं अनुमान लगा रहा हूँ)। कोई सुझाव? – hellomello

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