PHP SoapClient में SOAP प्रतिक्रिया के आरंभ और अंत में संलग्न अनचाहे स्ट्रिंग्स




xml web-services (2)

मैं सोप एपीआई सर्वर से अनुरोध प्राप्त करने का प्रयास करते समय निम्न php कोड निष्पादित कर रहा हूं

try {
    $soap = new SoapClient($wsdl, $options);
    $data = $soap->GetXYZ($params);
}
catch(Exception $e) {
    $Lastresponse = $soap->__getLastResponse();
}

मुझे मिला था "लगता है जैसे हमें कोई XML दस्तावेज़ नहीं मिला" प्रतिक्रिया कोड

लेकिन जब मैं कैच ब्लॉक में $ अंतिम पावरप्रेमी चर को देखा, तो मैंने इसे नीचे पाया:

------=_Part_1134075_393252946.1482317378966 Content-Type: application/xop+xml; charset=utf-8; type="text/xml" <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header/> <SOAP-ENV:Body> ......all valid data ... </SOAP-ENV:Body> </SOAP-ENV:Envelope> ------=_Part_1134075_393252946.1482317378966--

नोट: मैं उपयोग कर रहा हूँ $ विकल्प पैरामीटर है:

$options = array(
    'uri'=>'http://schemas.xmlsoap.org/soap/envelope/',
    //'style'=>SOAP_RPC,
    //'use'=>SOAP_ENCODED,
    'soap_version'=>SOAP_1_1,
    'cache_wsdl'=>WSDL_CACHE_NONE,
    'connection_timeout'=>15,
    'trace'=>true,
    'encoding'=>'UTF-8',
    'exceptions'=>true
);

हालांकि मैंने XML को पार्स करने के लिए एक वैकल्पिक हल किया है, क्या किसी के पास उन अतिरिक्त---- पार्ट बिट्स के बारे में कोई विचार है? क्या कुछ है जो मैं गलत कर रहा हूँ?


नीचे क्वेरी का उपयोग करने का प्रयास करने के लिए आपको अनुरोध करना

            $headers = array(
            "POST: ".url." HTTP/1.1",
            "Host: ".domain."",
            "Accept-Encoding: gzip,deflate",
            "Content-type: text/xml;charset=UTF-8",
            "SOAPAction: \"http://tempuri.org/wsdlurl/methodname\"",
            "Connection: Keep-Alive",
            "Content-length:".strlen($xml),
            "User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
            "
            )

    $url = your url;
    $ch = curl_init();      
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_ENCODING, '');
    curl_setopt($ch, CURLOPT_POSTFIELDS, $options); // the SOAP request
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);     
    $response = curl_exec($ch);
    $err = curl_error($ch);
    $doc = new DOMDocument();
    $doc->loadXML( $response );     
    $authKey = $doc->getElementsByTagName( "fieldname" );

आप अपवाद को पकड़ने के लिए हैं:

SoapClient :: SoapClient () एक E_ERROR त्रुटि उत्पन्न करेगा यदि स्थान और uri विकल्प गैर- WSDL मोड में प्रदान नहीं किए गए हैं।

एक सोपफॉल्ट अपवाद अगर wsdl यूआरआई लोड नहीं किया जा सकता है फेंक दिया जाएगा।