SOAPClient, lastResponseHeaders, lastRequestHeaders

Юлия

Новичок
SOAPClient, lastResponseHeaders, lastRequestHeaders

Здравствуйте.
Вот какая задача: создаю SoapClient объект(без wsdl) и хочу им воспользоваться, но происходит что-то странное.

Вот кусок кода:
PHP:
$client = new SoapClient(NULL, array('location' => MY_LOCATION, 'uri' => MY_URI, 'soap_version' => SOAP_1_2, 'trace' => true));
$client->__doRequest($requestXML, MY_LOCATION, "SOAP_ACTION", SOAP_1_2);

var_dump($client);
var_dump($client->__getLastResponse()); 
var_dump($client->__getLastRequest());
Вот, что мне выводится.

object(SoapClient)#1 (7) {
["uri"]=> string(32) "MY_URI"
["location"]=> string(71) "MY_LOCATION"
["trace"]=> int(1)
["_soap_version"]=> int(2)
["httpurl"]=> resource(8) of type (Unknown)
["__last_request_headers"]=>
string(246) "POST SOAP_SERVICE_PATH HTTP/1.1
Host: HOST_NAME
Connection: Keep-Alive
User-Agent: PHP-SOAP/5.2.4-1+b1
Content-Type: application/soap+xml; charset=utf-8; action="SOAP_ACTION"
Content-Length: 1836

"

["__last_response_headers"]=>
string(162) "HTTP/1.1 200 OK
Connection: close
Date: Fri, 21 Mar 2008 16:12:44 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Content-Type: text/xml; charset=utf-8
"

}

NULL

NULL


Значения в строчках SOAP_SERVICE_PATH, MY_URI, MY_LOCATION и пр., по-моему, не имеют принципиального значения, поэтому убраны из кода.


Я так понимаю что в свойствах __last_request_headers и __last_response_headers должно храниться то же самое что выводится функциями __getLastRequest() и __getLastResponse(). Но почему-то эти функции выдают мне NULL.

Похоже что-то случилось :(
 

tony2001

TeaM PHPClub
>var_dump($client->__getLastResponse());
>var_dump($client->__getLastRequest());

вероятно потому, что они называются __getLastRequestHeaders() и __getLastResponseHeaders().
 

Юлия

Новичок
tony2001
А ну да, спасибо ;)

Но из-за этого замечания у меня вот какой вопрос возник (понаглею чуток):
Почему $client->__getLastRequest(); -- NULL, хотя в хидере мы видим Content-Length: 1836 (что в общем-то соотв-ет размеру отсылаемого XML-я). Такое бывает?
 

tony2001

TeaM PHPClub
__getLastRequest() возвращает значение свойства "__last_request".
такого свойства нет, поэтому и NULL.
 

tony2001

TeaM PHPClub
Дайте тест-кейс, я у себя проверю.

-~{}~ 24.03.08 13:02:

__doRequest() и не должен трэйсить.
он для того, чтобы можно было в запросе что-то изменить, это transport layer.
да и зачем там трэйсить, если этот же XML получается как результат __doRequest()?
(с) Стогов
 
Сверху