2010-11-30 15 views
5

मैं बहुत सोप ​​करने के लिए नया हूँ (यानी कोई सुराग नहीं!)php में सोप प्रमाणन हेडर भेजने समस्याएं

मैं एक ग्राहक द्वारा कहा गया है एक मौजूदा सोप सेवा है कि मेरे सोप हेडर के माध्यम से किया प्रमाणीकरण की आवश्यकता के साथ बातचीत करने के लिए (एक सरल उपयोगकर्ता नाम और पासवर्ड)

मैं अपने निपटान में 3 तरीकों,

IsAlive IsAliveSecure ChangeUserDetails

IsAlive बस सच वापस आती है और मैं इसे कोई कॉल कर सकते हैं समस्या

IsAliveSecure उचित प्रमाणीकरण के साथ सच हो जाता है और मैं इसे सही वापस नहीं कर सकता।

मूल रूप से मैं निम्नलिखित अनुरोध भेजने के लिए की जरूरत है:

POST /ripplecomprovisioning.asmx HTTP/1.1 
Host: provisioning.example.ie 
Content-Type: text/xml; charset=utf-8 
Content-Length: length 
SOAPAction: "http://www.blueface.ie/provisioning/IsAliveSecure" 

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Header> 
    <SoapAuthHeader xmlns="http://www.example.ie/provisioning/"> 
     <Username>myusername</Username> 
     <Password>mypassword</Password> 
    </SoapAuthHeader> 
    </soap:Header> 
    <soap:Body> 
    <IsAliveSecure xmlns="http://www.example.ie/provisioning/" /> 
    </soap:Body> 
</soap:Envelope> 

मेरा प्रश्न है कि कैसे मैं एक अनुरोध php में ऊपर की तरह स्वरूपित भेजूं?

इस

मैं क्या कोशिश की, लेकिन कोई सफलता के साथ:

$ soapClient = नए SoapClient ("https://provisioning.example.ie/ripplecomprovisioning.asmx?WSDL");

object(stdClass)#3 (1) { 
    ["IsAliveResult"]=> 
    bool(true) 
} 
<br /><br /> 
Fatal error: Uncaught SoapFault exception: [soap:Server] System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.UnauthorizedAccessException: Attempted to perform an unauthorized operation. 
    at example.VoIP.Provisioning.RipplecomProvisioningServices.IsAliveSecure() 
    --- End of inner exception stack trace --- in /var/www/ripplecomweb/authentication/soap.php:20 
Stack trace: 
#0 [internal function]: SoapClient->__call('IsAliveSecure', Array) 
#1 /var/www/ripplecomweb/authentication/soap.php(20): SoapClient->IsAliveSecure() 
#2 {main} 
    thrown in /var/www/ripplecomweb/authentication/soap.php on line 20 

किसी भी मदद के इस के साथ बहुत सराहना की जाएगी:

// Prepare SoapHeader parameters 
$sh_param = array( 
      'Username' => 'myusername', 
      'Password' => 'mypassword'); 
$headers = new SoapHeader('ripplecomprovisioning', 'SoapAuthHeaders', $sh_param); 

// Prepare Soap Client 
$soapClient->__setSoapHeaders(array($headers)); 
    $result = $soapClient->isAlive(); 

echo var_dump($result); 

echo "<br /><br />"; 

    $result = $soapClient->IsAliveSecure(); 

echo var_dump($result); 

ऊपर से उत्पादन इस प्रकार है। मैं असफल होने का जोखिम नहीं उठा सकता !!

धन्यवाद

कीव

उत्तर

1

खैर यह है कि अगर हम सेवा के डबल्यूएसडीएल देख सकते हैं एक बहुत आसान होगा। लेकिन कोशिश तो निम्न चरणों: यदि आप इसे करने के लिए कुछ पास करना

1.Check isAliveSecure विधि के लिए डबल्यूएसडीएल को देखने के लिए।

2.See क्या अनुरोध भेज रहे वास्तव में की तरह दिखता है:

var_dump($soapClient->__getLastRequest()); 
var_dump($soapClient->__getLastRequestHeaders()); 

(वाकई इन तरीकों के लिए विकल्प 'trace' => TRUE साथ $soapClient instantiating कर रहे हैं या वे काम नहीं करेगा -> देख PHP manual)।

3.Try फार्म का है कि क्या आप वाकई मैन्युअल कमांड लाइन के माध्यम से सही होना चाहिए रहे हैं में अनुरोध भेजते समय, कुछ की तरह:

curl -v -k -d @/path/to/the/file/with/the/request/xml http://service_url 
संबंधित मुद्दे