2013-02-08 23 views
9

मैं PHP के अंतर्निहित साबुन कार्यों का उपयोग करके एक एपीआई में लॉगिन करने का प्रयास कर रहा हूं। मुझे इस तरह का परिणाम मिला।साबुन: लिफाफा SOAP-ENV: लिफाफा PHP

[LoginResult]=> false, 
[ErrorMsg] => Login failed with the reason : The security object is invalid 

यह एपीआई प्रदाता द्वारा आवश्यक है।

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<soap:Body> 
    <Login xmlns="http://tempuri.org/Example/Service1"> 
      <objSecurity> 
       <WebProviderLoginId>test</WebProviderLoginId> 
       <WebProviderPassword>test</WebProviderPassword> 
       <IsAgent>false</IsAgent> 
      </objSecurity> 
      <OutPut /> 
      <ErrorMsg /> 
    </Login> 
</soap:Body> 
</soap:Envelope> 

&, यहां मैं कार्यों का उपयोग करके उत्पादन करने में सक्षम था।

<?xml version="1.0" encoding="UTF-8"?> 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tempuri.org/Example/Service1"> 
<SOAP-ENV:Body> 
    <ns1:Login> 
     <objSecurity> 
      <WebProviderLoginId>test</WebProviderLoginId> 
      <WebProviderPassword>test</WebProviderPassword> 
      <IsAgent>false</IsAgent> 
     </objSecurity> 
     <OutPut/> 
     <ErrorMsg/> 
    </ns1:Login> 
</SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

यहां कोड है जिसे मैं अनुरोध भेजने के लिए उपयोग करता था।

<?php 
class objSecurity { 
function objSecurity($s, $i, $f) { 
    $this->WebProviderLoginId = $s; 
    $this->WebProviderPassword = $i; 
    $this->IsAgent = $f; 
} 
} 

class nextObject { 
function nextObject($objSecurity) { 
    $this->objSecurity=$pobjSecurity; 
    $this->OutPut=NULL; 
    $this->ErrorMsg=NULL; 
} 
} 

$url = 'http://example.com/sampleapi/test.asmx?WSDL'; 
$client = new SoapClient($url, array("soap_version" => SOAP_1_1,"trace" => 1)); 
$struct = new objSecurity('test', 'test', false); 
$data = new nextObject($struct); 
$soapstruct2 = new SoapVar($data, SOAP_ENC_OBJECT); 
print_r(
    $client->__soapCall(
     "Login", 
     array(new SoapParam($soapstruct2, "inputStruct")) 
    ) 
); 

echo $client->__getLastRequest(); 

?> 

ये अंतर मुझे मिले हैं।

मेरे अनुरोध में xmlns:xsi गुम है।

आवश्यकता <soap:Envelope के साथ शुरू होती है, लेकिन मेरा अनुरोध <SOAP-ENV:Envelope से शुरू होता है।

मेरे अनुरोध में अतिरिक्त xmlns:ns1 है।

& फ़ंक्शन नाम टैग ns1: से शुरू होता है।

कृपया मुझे आवश्यक प्रारूप में अपना अनुरोध करने में मदद करें।

मुझे SOAP के बारे में बहुत कुछ पता नहीं है और मैं केकेपीएचपी 2.3.0 के साथ PHP संस्करण 5.3.13 का उपयोग कर रहा हूं। मेरी खराब इंग्लिश के लिए माफ़ कीजिये।

+0

** मैं अपने जवाब ** है, लेकिन, साइट – KrIsHnA

+0

लगता है कि आपने यह पता लगा। मैं नहीं जानता कि इसे यहाँ केवल 8 घंटे के बाद पोस्ट किया जा सकता, कि के लिए इंतज़ार कर कहते हैं ... :(उत्तर, लेकिन एफवाईआई, वे दो एक्सएमएल उदाहरण एक सभ्य एक्सएमएल हैंडलर के दृष्टिकोण से काफी समतुल्य हैं। – JLRishe

उत्तर

11

यहां समाधान है। :)

<?php 
$url = 'http://example.com/sampleapi/test.asmx?WSDL'; 
$client = new SoapClient($url, array("soap_version" => SOAP_1_1,"trace" => 1)); 

$user_param = array (
    'WebProviderLoginId' => "test", 
    'WebProviderPassword' => "test", 
    'IsAgent' => false 
); 

$service_param = array (
    'objSecurity' => $user_param, 
    "OutPut" => NULL, 
    "ErrorMsg" => NULL 
); 

print_r(
    $client->__soapCall(
     "Login", 
     array($service_param) 
    ) 
); 

echo $client->__getLastRequest(); 

?> 

& अनुरोध किया गया था:

<?xml version="1.0" encoding="UTF-8"?> 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tempuri.org/Example/Service1"> 
<SOAP-ENV:Body> 
    <ns1:Login> 
     <ns1:objSecurity> 
      <ns1:WebProviderLoginId>test</ns1:WebProviderLoginId> 
      <ns1:WebProviderPassword>test</ns1:WebProviderPassword> 
      <ns1:IsAgent>false</ns1:IsAgent> 
     </ns1:objSecurity> 
    </ns1:Login> 
</SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

इस लिंक के लिए धन्यवाद। PHP SOAP Request not right

+0

बढ़िया !!! आपने अपना खुद का प्रश्न हल किया, समर्पण (वाई) – Krish

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