3

我可以转换从 WSDL 自动创建的 SoapHttpClientProtocol 类以使用 HTTPS 协议而不是 HTTP 吗?(如果,如何?)

只需将 Web 服务的 URL 访问权限从 更改http://为 会https://导致异常:

由于意外的数据包格式,握手失败

我的问题是,这个类非常大(想想 10k SLOC),我不确定我需要如何在这里更改协议。

4

1 回答 1

1

根据我从搜索新事物中可以得出的结论,您应该可以通过添加行来做到这一点

this.Url = "https://example.com:443/servlet_path";
this.Credentials = System.Net.CredentialCache.DefaultCredentials;

到派生SoapHttpClientProtocol类的构造函数和

[System.Web.Services.Protocols.SoapDocumentMethodAttribute(
  "http://example.com/servlet_path",
  RequestNamespace="http://example.com/",
  ResponseNamespace="http://example.com/",
  Use=System.Web.Services.Description.SoapBindingUse.Literal,
  ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]

到你的函数的定义。他们在一页中提到,如果目标机器没有来自执行机器接受的 CA 的证书,您可能需要覆盖默认证书验证器。

于 2013-03-27T20:47:38.563 回答