这是我用来调用Web服务的类中的代码的一部分(该类继承自SoapHttpClientProtocol)。每当我调用localidades()时,都会从服务器收到错误405,这是因为localidades()发送的是帖子而不是get,并且服务器配置为仅允许get。如何更改请求类型?
我试图通过重写GetWebRequest()方法来更改请求类型(除了添加基本身份验证),但它只是添加了基本身份验证,而没有更改请求类型。
protected override System.Net.WebRequest GetWebRequest(Uri uri)
{
var request = base.GetWebRequest(uri);
String encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes("username" + ":" + "password"));
request.Headers.Add("Authorization", "Basic " + encoded);
request.Method = System.Net.WebRequestMethods.Http.Get;
return request;
}
/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/localidades", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public string localidades() {
object[] results = this.Invoke("localidades", new object[0]);
return ((string)(results[0]));
}
答案 0 :(得分:1)
SOAP始终是HTTP POST。如果服务器需要GET,则表示服务器未正确托管SOAP服务。