Использование веб-службы SOAP, ошибка при десериализации типов значений - PullRequest
3 голосов
/ 10 июля 2009

Кто-нибудь знает, как я могу устранить неполадки ответов веб-служб? Когда я получаю свое мыльное сообщение от вызова веб-службы, я получаю эту ошибку «Строка» не является допустимым значением AllXsd », как только это тип значения, такой как datetime для каждого примера.

Мои прокси-классы генерируются из wsdl с использованием wsdl.exe, wsdl кажется действительным. Я не видел ничего плохого в прокси-классах (указанные значения генерируются, datetime обнуляется).

Я попробовал netmon увидеть конверты с мылом на проводе, но все кажется нормальным.

Можете ли вы придумать другие способы решения этой проблемы? или может быть подсказка о том, что здесь происходит?

Ответы [ 4 ]

1 голос
/ 22 июля 2009

Попробуйте Web Service Studio и поразите ваш веб-сервис этим инструментом, чтобы увидеть, есть ли у него такая же проблема, как у вашего клиента. Вы можете собрать некоторые подсказки. Является ли веб-сервис вашим кодом? Если это так, вы используете asmx или WCF? Вы используете сериализатор DataContract или XmlSerializer? Вы пытались восстановить свой клиентский прокси?

1 голос
/ 30 июля 2009

Хорошо, я выяснил, в чем проблема.

Для SOAP в SOAP существует 2 способа:

Либо весь элемент отсутствует Или с аргументом xsi: nil = "true" и без значения

Они исправили это, изменив свое сообщение первой опцией. С тех пор я могу без проблем десериализоваться.

Спасибо за ваши ответы.

1 голос
/ 10 июля 2009

Есть ли у вас документация, доступная на веб-сервисе? Вы сообщаете об этой проблеме при использовании datetime, проверяете дату в правильном формате date.ToString("yyyy-MM-dd"); или в соответствии с ожиданиями вашей службы.

0 голосов
/ 11 ноября 2014

Мой запрос SOAP возвращал BadRequest из-за этой вещи xsi:nil="true".
Что было исправлено, так это добавление этого в начало конверта SOAP:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

Например:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://www.blahblahblah.com/myobjectdefinition" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

Я не знаю, почему SoapUI не генерировал этот бит, но в любом случае это исправило его для меня.

...