2012-01-26 8 views
17

मैं इस (weather) उदाहरण के माध्यम से SOAP का मूल उपयोग सीखना चाहता हूं। इस डेटा को संसाधित करने योग्य कैसे है?PHP में साबुन वर्ग का उपयोग कैसे करें (उदाहरण के साथ)?

अनुरोध:

POST /globalweather.asmx HTTP/1.1 
Host: www.webservicex.net 
Content-Type: application/soap+xml; charset=utf-8 
Content-Length: length 

<?xml version="1.0" encoding="utf-8"?> 
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> 
    <soap12:Body> 
    <GetWeather xmlns="http://www.webserviceX.NET"> 
     <CityName>string</CityName> 
     <CountryName>string</CountryName> 
    </GetWeather> 
    </soap12:Body> 
</soap12:Envelope> 
HTTP/1.1 200 OK 
Content-Type: application/soap+xml; charset=utf-8 
Content-Length: length 

प्रतिक्रिया:

<?xml version="1.0" encoding="utf-8"?> 
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> 
    <soap12:Body> 
    <GetWeatherResponse xmlns="http://www.webserviceX.NET"> 
     <GetWeatherResult>string</GetWeatherResult> 
    </GetWeatherResponse> 
    </soap12:Body> 
</soap12:Envelope> 
+0

@ टोपरर मुझे इसके बारे में जानकारी मिली लेकिन कुल मिलाकर नहीं। Esecially php.net/manual/en/book.soap.php के लिए नहीं। यदि आप एक महान टोरूरियल पोस्ट करते हैं तो मैं आपका जवाब स्वीकार करूंगा (महान से मेरा मतलब है: इसके साथ मैं यह उदाहरण कर सकता हूं) –

+3

टॉपनर, मैं असहमत हूं। यह साइट प्रोग्रामिंग से संबंधित प्रश्नों के लिए है, न केवल कोड के लिए। जहां तक ​​सवाल बहुत खुला नहीं है, यह ठीक होना चाहिए। इस प्रश्न का शानदार उत्तर मैनुअल और अन्य जगहों पर उपयोगी संसाधनों के लिंक होगा, या शायद एक साधारण उदाहरण होगा। –

उत्तर

43

सबसे सरल दृष्टिकोण होगा:

$requestParams = array(
    'CityName' => 'Berlin', 
    'CountryName' => 'Germany' 
); 

$client = new SoapClient('http://www.webservicex.net/globalweather.asmx?WSDL'); 
$response = $client->GetWeather($requestParams); 

print_r($response); 

होगा उत्पादन

stdClass Object 
(
    [GetWeatherResult] => <?xml version="1.0" encoding="utf-16"?> 
<CurrentWeather> 
    <Location>Berlin-Tegel, Germany (EDDT) 52-34N 013-19E 37M</Location> 
    <Time>Jan 26, 2012 - 07:50 AM EST/2012.01.26 1250 UTC</Time> 
    <Wind> from the SE (130 degrees) at 14 MPH (12 KT):0</Wind> 
    <Visibility> greater than 7 mile(s):0</Visibility> 
    <SkyConditions> mostly clear</SkyConditions> 
    <Temperature> 33 F (1 C)</Temperature> 
    <Wind>Windchill: 23 F (-5 C):1</Wind> 
    <DewPoint> 21 F (-6 C)</DewPoint> 
    <RelativeHumidity> 59%</RelativeHumidity> 
    <Pressure> 30.27 in. Hg (1025 hPa)</Pressure> 
    <Status>Success</Status> 
</CurrentWeather> 
) 

बाकी को सरलXML या कुछ समान के साथ पार्स किया जा सकता है।

नोट, कि इस तरह की प्रतिक्रिया इस वेब सेवा के लिए विशिष्ट है। वहाँ बेहतर वेब सेवाएं हैं, जो केवल एक एक्सएमएल स्ट्रिंग नहीं लौटती हैं, बल्कि डब्लूएसडीएल के भीतर प्रतिक्रिया संरचना प्रदान करती हैं।


संपादित एक "अधिक संरचित" वेब सेवा एक ही साइट पर GeoIP देखने हो सकता है के लिए एक उदाहरण: आप कर सकते हैं

stdClass Object 
(
    [GetGeoIPResult] => stdClass Object 
     (
      [ReturnCode] => 1 
      [IP] => 8.8.8.8 
      [ReturnCodeDetails] => Success 
      [CountryName] => United States 
      [CountryCode] => USA 
     ) 

) 

अब:

$client = new SoapClient('http://www.webservicex.net/geoipservice.asmx?WSDL'); 
$result = $client->GetGeoIP(array('IPAddress' => '8.8.8.8')); 

print_r($result); 

यह आप देता है

$country = $result->GetGeoIPResult->CountryName; 
का आविष्कार करके मूल्यों को आसानी से एक्सेस करें
+0

ग्रेट उत्तर, ऑफिसियल PHP डॉक्स http://php.net/manual/en/book.soap.php चूसना। अपना उत्तर पढ़ने के बाद घटना मुझे नहीं मिल सकती है कि मैन्युअल में आपकी विधि कहां वर्णित है लेकिन यह मेरे लिए काम करता है, धन्यवाद। – Ekonoval

+1

@ इकोनोवल: मेरी विधि दस्तावेज नहीं है, क्योंकि विधि नाम 'GetGeoIP() 'और' GetWeather() 'सोप क्लाइंट के" असली "विधियां नहीं हैं, लेकिन उन्हें जादू' __call() 'विधि के माध्यम से बुलाया जाता है। विधियों के नाम WSDL फ़ाइल में परिभाषित किए गए हैं। –

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