मैं 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 का उपयोग कर रहा हूं। मेरी खराब इंग्लिश के लिए माफ़ कीजिये।
** मैं अपने जवाब ** है, लेकिन, साइट – KrIsHnA
लगता है कि आपने यह पता लगा। मैं नहीं जानता कि इसे यहाँ केवल 8 घंटे के बाद पोस्ट किया जा सकता, कि के लिए इंतज़ार कर कहते हैं ... :(उत्तर, लेकिन एफवाईआई, वे दो एक्सएमएल उदाहरण एक सभ्य एक्सएमएल हैंडलर के दृष्टिकोण से काफी समतुल्य हैं। – JLRishe