В настоящее время я работаю над проектом, в котором мне нужно использовать веб-сервис 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, потому что мне нужно иметь возможность ловить исключения из службы.