将SOAP 1.2与Xamarin一起使用

时间:2014-08-20 10:21:44

标签: android ios soap xamarin

我需要在Xamarin Android和Xamarin iOS项目中使用SOAP 1.2 Web服务。每当我尝试向Web服务发送请求时,我都会得到例外:

System.Net.WebException:处理Web请求时出错:状态码415(UnsupportedMediaType):无法处理消息,因为内容类型为'text / xml; charset = utf-8'不是预期的类型'application / soap + xml;字符集= UTF-8' 。

    BasicHttpsBinding binding = new BasicHttpsBinding
    {
            TextEncoding = System.Text.Encoding.UTF8,
            Name = "basicHttpBinding",
            MaxBufferSize = 2147483647,
            MaxReceivedMessageSize = 2147483647,
            MessageEncoding = WSMessageEncoding.Text
    };
    TimeSpan timeout = new TimeSpan(0, 0, 30);
    binding.SendTimeout = timeout;
    binding.OpenTimeout = timeout;
    binding.ReceiveTimeout = timeout;
    binding.Security.Mode = BasicHttpsSecurityMode.Transport;


    EndpointAddress endpointAdr = new EndpointAddress("https://my.WebService.Address.svc");

    Client client_mc = new Client(binding, endpointAdr);
    var data = client_mc.GetUserInfo("db","user","password", "language");

我读到Xamarin不支持SOAP 1.2 Web服务。我试图使用CustomHttpsBinding而不是BasicHttPsBinding,但它似乎不起作用。 Xamarin中没有WSHttpBinding。

是否有人为此问题提供解决方案或解决方法?

非常感谢提前

3 个答案:

答案 0 :(得分:0)

我有一段时间没遇到这个问题,只是意识到Xamarin许可证起了重要作用。

WSHttpBinding只会在“商业”版本中公开。如果您拥有“独立”许可证,那么您将只能使用BasicHttpBinding。

Indie许可证不支持WCF,因此您将拥有C#库的“水下”版本。

尝试使用Web API来托管您的服务,它适用于Xamarin。

答案 1 :(得分:0)

我的解决方法是使用:

BasicHttpBinding bind= new BasicHttpBinding(BasicHttpSecurityMode.Transport);

并在我的服务上公开使用此绑定的端点

e.g。在config add:

<bindings>
<basicHttpBinding>
    <binding name="BasicSecure">
      <security mode="Transport" />
    </binding>
  </basicHttpBinding>
</bindings>
<services>
  <service name="name" behaviorConfiguration="">
  <endpoint address="mobile" binding="basicHttpBinding" bindingConfiguration="BasicSecure" contract="contract"/>
</services

答案 2 :(得分:0)

感谢您的建议和样品。

我的解决方案是将customBinding添加到配置文件并将消息编码更改为Soap 1.1:

    <binding name="customHttpBinding">
      <textMessageEncoding messageVersion="Soap11" />
      <httpTransport/>
    </binding>

祝你好运