मैं एक वेब सेवा है और मैं अपने परिचालन PHP में सोप ग्राहक का उपयोग कर में से एक बोल रहा हूँ, लेकिन सभी मैं इस ["any"]=> string(120) "falseObject reference not set to an instance of an object.
मुझे यह त्रुटि क्यों मिलती है "falseObject संदर्भ किसी ऑब्जेक्ट के उदाहरण पर सेट नहीं है।" जब मैं अपने वेब सेवा में एक ऑपरेशन फोन
मैं जानना चाहता हूँ है वहाँ मेरे कोड में कुछ भी गलत है क्योंकि मुझे विश्वास है कि वेब सेवा से मेरा कनेक्शन% 100 काम कर रहा है।
क्या मैं बना रहा हूँ xml स्ट्रिंग में कुछ गलत है? है
<wsdl:operation name="XmlIslet">
<wsdl:input message="tns:XmlIsletSoapIn"/>
<wsdl:output message="tns:XmlIsletSoapOut"/>
</wsdl:operation>
और WSDL में अपनी मापदंडों का विवरण::
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">
<s:element name="XmlIslet">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="xmlIslem">
<s:complexType>
<s:sequence>
<s:any/>
</s:sequence>
</s:complexType>
</s:element>
<s:element minOccurs="0" maxOccurs="1" name="xmlYetki">
<s:complexType>
<s:sequence>
<s:any/>
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="XmlIsletResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="XmlIsletResult">
<s:complexType mixed="true">
<s:sequence>
<s:any/>
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
</wsdl:types>
मेरे साबुन और PHP कोड पीछा कर रहा है:
ऑपरेशन है
<?php
$username = "username";
$password = "password";
$xmlString = "<Firmalar></Firmalar>";
function strtoXmldocument($str)
{
$dom = new DOMDocument();
$str1 = $str;
return $dom->loadXML($str1);
}
function stringToDataset($xmlString, $username, $password)
{
$client = new SoapClient('http://1.1.1.1/WSTEST/Service.asmx?WSDL');
$response = $client->XmlIslet(strtoXmldocument($xmlString)->documentElement,
strtoXmldocument("<Kullanici><Adi>" .$username. "</Adi><Sifre>" .$password. "</Sifre></Kullanici>")->documentElement);
var_dump($response);
}
stringToDataset($xmlString, $username, $password);
?>
एसओएपी अनुरोध निम्नानुसार है:
POST /WSTEST/Service.asmx HTTP/1.1
Host: 1.1.1.1
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>
<XmlIslet xmlns="http://tempuri.org/">
<xmlIslem>xml</xmlIslem>
<xmlYetki>xml</xmlYetki>
</XmlIslet>
</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>
<XmlIsletResponse xmlns="http://tempuri.org/">
<XmlIsletResult>xml</XmlIsletResult>
</XmlIsletResponse>
</soap12:Body>
</soap12:Envelope>
vardump
उत्पादन होता है:
usernamepasswordobject(stdClass)#2 (1) { ["XmlIsletResult"]=> object(stdClass)#3 (1) { ["any"]=> string(120) "falseObject reference not set to an instance of an object." } }
संपादित करें: मैं जो मुझे मेरे अनुरोध के एक खाली शरीर से पता चलता htmlentities($client->__getLastRequest())
का उपयोग कर अनुरोध एक्सएमएल प्राप्त करने की कोशिश :
========= REQUEST ==========
string(292)
"<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tempuri.org/">
<SOAP-ENV:Body>
<ns1:XmlIslet>
<ns1:xmlIslem/>
<ns1:xmlYetki/>
</ns1:XmlIslet>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope> "
शायद वस्तु नहीं करता है एक्सएमएल में – Rico
उपयोग मौजूद यदि एक्सएमएल गलत तरीके से –
Rico
गठन किया गया था तो इसका मतलब है के बाद से प्रतिक्रिया 200 है सब कुछ उचित है की जाँच करने के लेकिन यू आर वस्तु के लिए एक संपत्ति है कि रिक्त है – Rico