देशी PHP में मूलभूत प्राधिकरण के साथ साबुन हैडर




soap teradata (2)

ऐसा इसलिए है क्योंकि आपको अपने लॉगिन क्रेडेंशियल्स को इस तरह सांकेतिकृत करना चाहिए:

base64_encode("$login:$password")

के बजाय: base64_encode($login) . ':' . base64_encode($password) base64_encode($login) . ':' . base64_encode($password)

मुझे टेराडेटा सोप एपीआई से कनेक्ट करने की आवश्यकता है जो अब प्रवेश प्रमाण पत्र के साथ भेजा जाने वाला एक प्राधिकरण बेसिक हैडर की मांग करता है। मुझे नहीं पता कि समस्या को कैसे निपटाना है बुनियादी प्राधिकरण हैडर जोड़ने पर मुझे सोपुइ में काम करने का उपयोग मिला - कृपया कोई भी मुझे सीधे कोड प्राप्त करने में सहायता कर सकता है:

यहां हेडर सोपुइ भेजता है और प्रतिक्रिया अच्छा है:

POST http://example.com/api/soap/v6 HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: ""
Content-Length: 302
Host: example.com
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
Authorization: Basic [user&pass-base64-encoded]

यहां बताया गया है कि मैं अपना साबुन क्लाइंट स्थापित करने का प्रयास कैसे कर रहा हूं:

$namespace =  "http://ecircle.com/developer/ecmapi";
$wsdl = "https://sslh.teradatadmc.com/teradata/api/soap/v6?wsdl";
$client = new SoapClient($wsdl, array("trace" => 1, "exceptions" => 0));
$login = 'xxx';
$password = 'yyy';
$header = new SoapHeader($namespace, 'Authorization: Basic',   
base64_encode("$login:$password"));
$client->__setSoapHeaders($header);

यह स्वीकार नहीं किया गया है और मुझे सिर्फ एक HTTP / 1.1 401 अनधिकृत त्रुटि मिलती है

स्टैकट्र्रेस मुझे उस शीर्षलेख को दिखाता है जिसे मैंने भेजा है - प्राधिकरण भाग वहां अनुपलब्ध है।

public '__last_request_headers' => string 'POST /api/soap/v6 HTTP/1.1
Host: example.com
Connection: Keep-Alive
User-Agent: PHP-SOAP/5.5.12
Content-Type: text/xml; charset=utf-8
SOAPAction: ""
Content-Length: 584





soap-client