Как исправить ошибку soap: "Missing tag in input message"?

pampushechca

Новичок
Как исправить ошибку soap: "Missing tag in input message"?

Добрый день!
Подскажите пожалуйста, из-за чего soap-сервер может выдавать ошибку: "Missing tag in input message"? Может кто-то сталкивался с подобной проблемой.
Вот код:
PHP:
$params = array("clientId" => $client_id, 
 "clientPassword" => $client_pass,
 "command" => "QUERY",
 "fileEncoding" => "646");
 $soap = new SoapClient($location);
 $variables = $soap->$method($params);
На сервере стоит php5, коннект к wsdl-файлу есть(ошибок на эту тему не выдает). Метод тоже принимает.
 

WP

^_^
> Подскажите пожалуйста, из-за чего soap-сервер может выдавать ошибку: "Missing tag in input message"?
"Во входном сообщении нет тега"
 

pampushechca

Новичок
Автор оригинала: WP
> Подскажите пожалуйста, из-за чего soap-сервер может выдавать ошибку: "Missing tag in input message"?
"Во входном сообщении нет тега"
Если бы перевод решил проблему..:(
Просто непонятно, это у сервера ошибки какие-то, или я что-то не так делаю.
 

slach

Новичок
Включаем какой нибудь HTTP сниффер
выцепляем XML ТЕЛО запроса
и проверяем его хотя бы на XML Well formed
а потом уже смотрим соответсвует ли оно SOAP или нет

Missing tag in input message
как вы эту ошибку получаете???
вам возвращается ПРАВИЛЬНЫЙ SOAP ответ??? но в нем есть Error Message??? т.е. вызов $method проходит но на стороне сервера почему то решают что параметры вызова неправильные??
или это вообще ДО ТОГО как $method отработал??
на стороне сервера там где WDSL там тоже php5??? у вас php5 SOAPServer ?? или чтото другое в качестве Web сервера???

тогда смотрите документацию по $method
того веб-сервиса к которому коннектитесь
 

pampushechca

Новичок
Автор оригинала: slach
Включаем какой нибудь HTTP сниффер
выцепляем XML ТЕЛО запроса
и проверяем его хотя бы на XML Well formed
а потом уже смотрим соответсвует ли оно SOAP или нет

Missing tag in input message
как вы эту ошибку получаете???
вам возвращается ПРАВИЛЬНЫЙ SOAP ответ??? но в нем есть Error Message??? т.е. вызов $method проходит но на стороне сервера почему то решают что параметры вызова неправильные??
или это вообще ДО ТОГО как $method отработал??
на стороне сервера там где WDSL там тоже php5??? у вас php5 SOAPServer ?? или чтото другое в качестве Web сервера???

тогда смотрите документацию по $method
того веб-сервиса к которому коннектитесь
Соединение идет через SSL, поэтому выцепить XML - это проблема...
Тем более отправляю с удаленного сервера, а не с локального.

Да, мне возвращается правильный soap-ответ, вот как выглядит объект:
PHP:
stdClass Object ( [error] => stdClass Object ( [description] => Missing  tag in input message ) )
На стороне сервера черти что (уж простите), состыковываю нашу систему с американской.
У меня php5, но я использую только soap-client.
 

slach

Новичок
pampushechca
если поднять php SoapClient под win32
то HTTPAnalyzerFull Standalone v3.1 и выше прекрасно перехватывает соединения по HTTPS

документация по "американской системе" ЕСТЬ???
в нее и смотрите
там явно ожидают ДРУГОГО запроса
"command" => "QUERY",
а где само по себе Input Message ?? почему пропущено =)
 

pampushechca

Новичок
Спасибо за советы, будем перехватывать xml :)
Документация есть, по ней все и делаю.
 

slach

Новичок
Ну как перехватите XML
SOAP запрос и SOAP ответ вышлите разработчикам
может быть они что нибудь подскаюут?
 

pampushechca

Новичок
Я нашла, как смотреть xml-сообщение при отправке запроса!
Нужно при соединении с wsld-файлом добавлять параметр trace:

PHP:
$soap = new SoapClient($location, array('trace' => true));
Ура!:)

Xml-ки уже выслала, буду ждать ответа :)

-~{}~ 30.04.08 17:06:

Оказывается, ошибку сервер писал из-за того, что PHP прибавляет к тегу метода пространство имен.
PHP:
<ns1:method></ns1:method>
А нужно, чтобы было просто
PHP:
<method></method>
Кто-нибудь знает, как можно средствами php убрать эти пространства имен?
 
Сверху