2009-10-24 10 views
7
से जावा वेब सेवा तक पहुंच

मैं एक जावा वेब सेवा का उपयोग कर Zend_Soap_Client Zend फ्रेमवर्क v1.9.0 से कनेक्ट करने का प्रयास कर रहा हूँ:SoapFault अपवाद: [HTTP] असमर्थित मीडिया प्रकार जब पीएचपी

<?php 
include('Zend/Loader/Autoloader.php'); 
$autoloader = Zend_Loader_Autoloader::getInstance(); 
$client = new Zend_Soap_Client('https://webservice.com/webservice-war/webservice?wsdl' 
    , array('encoding'=> 'UTF-8')); 

try{ 
    $result = $client->find_customer(array('username' => 'user', 
         'password' => '123'), array('city' => 'some city')); 
} catch(Exception $e){ 
    echo $e; 
} 

echo '<pre>' . $client->getLastRequestHeaders() . '</pre>'; 
?> 

आउटपुट:

SoapFault exception: [HTTP] Unsupported Media Type in 
/Library/ZendFramework-1.9.0/library/Zend/Soap/Client.php:937 
Stack trace: 
#0 [internal function]: 
SoapClient->__doRequest('_doRequest(Object(Zend_Soap_Client_Common), 
    '__doRequest('__soapCall('find_customer', Array, NULL, NULL, Array) 
#6 [internal function]: 
Zend_Soap_Client->__call('find_customer', Array) 
#7 /Users/webservicetest/index.php(8): 
Zend_Soap_Client->find_customer(Array, Array) 
#8 {main} 

POST /webservice-war/webservice HTTP/1.1 
Host: webservice.com 
Connection: Keep-Alive 
User-Agent: PHP-SOAP/5.2.6 
Content-Type: application/soap+xml; charset=utf-8; action="" 
Content-Length: 315 

कोई विचार क्या गलत हो सकता है? URL सही है, के बाद से मैं availible कार्यों जब

$client->getFunctions() 

उत्तर

32

बुला this listing के अनुसार मिलता है, अपवाद इंगित करता है कि सर्वर वेब होस्टिंग सेवा आपके अनुरोध एन्कोडिंग के साथ खुश नहीं है:

इंगित करता है कि सहकर्मी HTTP सर्वर अनुरोध संदेश को एन्कोड करने के लिए प्रयुक्त सामग्री-प्रकार का समर्थन नहीं करता है। संदेश विनिमय को असफल होने के रूप में माना जाता है।

तो आपको उन सामग्री-प्रकार/एन्कोडिंग से संबंधित वेब-सेवा प्रदाता से जांच करनी चाहिए।

यदि आप SOAP_1_2 का उपयोग कर रहे हैं तो एक संभावित समाधान SOAP_1_1 में बदलना है क्योंकि इससे अनुरोध किए गए अनुरोधों में बदलाव आएगा।

+7

अधिक विशिष्ट: http://framework.zend.com/issues/browse/ZF-5286। विकल्पों में 'soap_version' => SOAP_1_1 सेट करके हल किया गया है, अनुरोध को आवेदन/साबुन + xml –

+0

@ मैड्समोबेक ब्रिलियंट के बजाय पाठ/xml द्वारा पारित किया गया है, मैंने एक समान समस्या हल की है। – googletorp

+1

शीर्षलेख जोड़ने का प्रयास करें सामग्री-प्रकार: टेक्स्ट/xml; साबुन 1.1 और सामग्री-प्रकार के लिए charset = utf-8 सामग्री-प्रकार: एप्लिकेशन/साबुन + xml; साबुन 1.2 के लिए charset = utf-8 –

5

मैं ज़ेंड फ्रेमवर्क का उपयोग नहीं कर रहा हूं, लेकिन जावास्क्रिप्ट में XMLHttpRequest के साथ एक ही समस्या थी। समाधान SOAP अनुरोध शीर्षलेख में सामग्री-प्रकार निर्दिष्ट करना था।

var sr = '<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.w3schools.com/webservices/"> <SOAP-ENV:Body><ns1:CelsiusToFahrenheit><ns1:Celsius>32</ns1:Celsius></ns1:CelsiusToFahrenheit></SOAP-ENV:Body></SOAP-ENV:Envelope>'; 
http_request = new XMLHttpRequest(); 
http_request.open('POST', 'http://www.w3schools.com/webservices/tempconvert.asmx', true); 
http_request.setRequestHeader("Content-Type", "text/xml; charset=utf-8"); 
http_request.send(sr); 
संबंधित मुद्दे