Существует ряд сервисов SOAP, которые я хочу назвать (по ряду сервисов), и, хотя конечные точки хорошо определены и задокументированы, данных WSDL нет ... поэтому я решил создать свои собственные.
Для этого я создал тестовую службу WCF, которая соответствует известному интерфейсу службы, которую я хочу вызвать.
Затем я сохранил раскрытый WSDL, изменил базовый адрес, на который ссылаются WSDL, создал мой прокси (с wsdl.exe), добавил его в тестовый клиентский проект и могу успешно создать прокси и выполнять вызовы, которые вызывают SOAP служба для отправки ожидаемого ответа ... только этот ожидаемый ответ не принимается прокси и возвращается в вызывающий код.
При просмотре трафика туда-обратно ... я ясно вижу, что сервис отвечает тем, что я хочу.
Какие-либо предложения относительно того, как я мог бы устранить эту проблему и получить прокси для сбора данных?
Учитывая, что ответы фактически идентичны, я вынужден оглянуться назад на различия между тем, что отправляет мой клиент, и другим отправляет.
Известное работающее приложение отправляет свой блоб XML, начиная со следующего:
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
Хотя мой клиент сразу начинает с конверта (без тега xml и с одним пространством имен меньше):
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
Другое отличие состоит в том, что сообщение внутри тела имеет префикс пространства имен в их, а мое - нет ... хотя оба определяют это пространство имен в теге.
Ala:
<s:Body>
<u:DoSomething xmlns:u="urn:http://some.namespace.org" />
</s:Body>
VS:
<s:Body>
<DoSomething xmlns="urn:http://some.namespace.org" />
</s:Body>