2012-02-21 6 views
11

इसलिए मुझे एक ऐसा एप्लिकेशन बनाने की आवश्यकता है जो एक्सएमएल अनुरोध प्राप्त करे और उस पर आधारित मुझे प्रतिक्रिया xml वापस करनी होगी। मुझे पता है कि अनुरोध कैसे भेजना है और प्रतिक्रिया प्राप्त करना है, लेकिन मैंने इसे कभी और नहीं किया है। मैं इस प्रकार अनुरोध भेजूंगा:एक्सएमएल अनुरोध कैसे प्राप्त करें और php में प्रतिक्रिया xml भेजें?

private function sendRequest($requestXML) 
{ 
    $server = 'http://www.something.com/myapp'; 
    $headers = array(
    "Content-type: text/xml" 
    ,"Content-length: ".strlen($requestXML) 
    ,"Connection: close" 
    ); 

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $server); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 100); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $requestXML); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
    $data = curl_exec($ch); 



    if(curl_errno($ch)){ 
     print curl_error($ch); 
     echo " something went wrong..... try later"; 
    }else{ 
     curl_close($ch); 
    } 

    return $data; 

} 

मेरा प्रश्न है - प्राप्त करने वाले पक्ष पर कोड क्या होगा? मैं आने वाले अनुरोध को कैसे पकड़ूं? धन्यवाद।

उत्तर

29

सामान्य विचार पोस्ट मूल्य में पढ़ना है, इसे एक्सएमएल के रूप में पार्स करना, उस पर एक व्यावसायिक निर्णय लेना, आपके द्वारा तय किए गए एपीआई के अनुसार एक्सएमएल प्रतिक्रिया तैयार करना, और प्रतिक्रिया में लिखना है।

पोस्ट मूल्य में पढ़ें:

XML के रूप में
$dataPOST = trim(file_get_contents('php://input')); 

पार्स:

$xmlData = simplexml_load_string($dataPOST); 

उसके बाद, आप (या दस्तावेज़ पेड़ यदि आप चाहें) एक XML स्ट्रिंग बाहर का निर्माण होगा, और यह प्रिंट प्रतिक्रिया के लिए बाहर। प्रिंट() या गूंज() ठीक कर देगा।

+0

शीर्ष पायदान समाधान एक चोटी पर ले लो। – Matth3w

0

आपको प्राप्त करने वाले अंत में केवल एक 'सामान्य' PHP स्क्रिप्ट बनाना है। आपके एंडपॉइंट और अनुरोध सेवा के बीच प्रोटोकॉल के आधार पर आपको सही स्थान से डेटा को पकड़ने की आवश्यकता है, जो कि $ _GET या $ _POST सरणी होने की संभावना है।

आप कच्चे पोस्ट डेटा अगर यह $ _POST में के माध्यम से नहीं आ रहा है पढ़ने के लिए हो सकता है, इस लेख

http://www.codediesel.com/php/reading-raw-post-data-in-php/

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