Это часть кода в классе, который я использую для вызова веб-службы (этот класс наследуется от 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]));
}