Ошибки клиента WCF при использовании сервисов Java - PullRequest
4 голосов
/ 21 января 2009

В настоящее время я работаю над проектом, в котором мне нужно использовать веб-сервис Java. Если я подключаюсь к сервису, используя старые веб-сервисы (asmx), он работает нормально. Однако, если я пытаюсь сделать то же самое с клиентом WCF, я получаю следующую ошибку:

Тип содержимого text / xml; charset = utf-8 ответного сообщения не соответствует типу содержимого привязки (application / soap + xml; charset = utf-8). При использовании пользовательского кодировщика убедитесь, что метод IsContentTypeSupported реализован правильно.

Мой очень прост и выглядит следующим образом:

//classic web service
OldSkoolService.HelloService serviceCall = new esb_wsdlsample.OldSkoolService.HelloService();
Console.WriteLine(serviceCall.SoapVersion);
Console.WriteLine(serviceCall.sayHello("something"));

HelloServiceClient prototypeClient = new HelloServiceClient();
var serviceChannel = prototypeClient.ChannelFactory;

Console.WriteLine(serviceChannel.Endpoint.Binding.MessageVersion);
Console.WriteLine(prototypeClient.sayHello("somethinge")); //<-- Error occurs here       

Файл конфигурации привязки / конечной точки также довольно прост:

<bindings>
  <customBinding>
    <binding name="Soap12Binding">
      <textMessageEncoding messageVersion="Soap12"/>
      <httpTransport />              
    </binding>
  </customBinding>        
</bindings>
<client>
    <endpoint address="http://10.10.6.51:7001/esb/HelloService" behaviorConfiguration=""
        binding="customBinding" bindingConfiguration="Soap12Binding" contract="Prototype.ESB.HelloService"
        name="HelloServicePort" />          
</client>

В качестве примечания я пытаюсь использовать мыло 1.2, потому что мне нужно иметь возможность ловить исключения из службы.

Ответы [ 2 ]

2 голосов
/ 21 января 2009

Исходя из вашего сообщения об ошибке, это просто означает, что ваше ответное сообщение Сервера - SOAP 1.1, тогда как вы ожидаете SOAP 1.2.

Вам придется перейти на SOAP 1.1 на клиенте (используя BasicHttpBinding, по крайней мере, сделайте это, чтобы проверить и посмотреть, работает ли он таким образом).

1 голос
/ 21 января 2009

Хотя это не требуется согласно спецификации SOAP 1.2, рекомендуется (т. Е. СЛЕДУЕТ ), чтобы в сообщениях SOAP использовался тип содержимого application / soap + xml.

Вы должны изменить это на стороне сервера. Если нет, то я думаю, что вам придется возиться с обязательным элементом textMessageEncoding в файле конфигурации, чтобы он принимал text / xml content-type.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...