Как позвонить в веб-сервис, используя HttpWebRequest - PullRequest
2 голосов
/ 08 июня 2010

Я могу успешно получить wsdl с сервера с кодом ниже.

Как теперь я могу вызвать метод (GetVersion) из этой же службы?

Попытка http://www.servername.com/DataService.asmx/GetVersion возвращает ошибку о том, что страница не найдена.У меня нет проблем с вызовом метода из ссылки .NET WebService, но я хотел бы иметь возможность использовать HttpWebRequest.

Dim req As HttpWebRequest
Dim resp As HttpWebResponse
Dim sr As IO.StreamReader

req = WebRequest.Create("http://www.servername.com/DataService.asmx?wsdl")
resp = req.GetResponse

sr = New IO.StreamReader(resp.GetResponseStream)
txt.Text = sr.ReadToEnd
sr.Close()

1 Ответ

0 голосов
/ 14 апреля 2013

Я считаю, что ваша единственная проблема - это конфигурация веб-сервера.Конфигурация каждой веб-службы (файл web.config в моем случае, поскольку я использую IIS) должна позволять управление протоколами, которым разрешен доступ к ней: Get, Post и / или Soap.

I 'Я только что проверил свой собственный веб-сервис и он отвечает на запросы GET из моего браузера ... Он также отвечает, как и ожидалось, на запросы POST (я адаптировал некоторый код из http://www.4guysfromrolla.com/articles/022410-1.aspx в следующий фрагмент:)

    Dim payload As Byte()
    payload = Text.Encoding.ASCII.GetBytes("paramName=firstValue&p2=secondValue")

    Dim webRequest As System.Net.HttpWebRequest
    webRequest = System.Net.HttpWebRequest.Create("http://www.servername.com/DataService.asmx/GetVersion")
    webRequest.Method = "POST"
    webRequest.KeepAlive = False
    webRequest.ContentType = "application/x-www-form-urlencoded"
    webRequest.ContentLength = payload.Length

    Dim reqStream As System.IO.Stream
    reqStream = webRequest.GetRequestStream()
    reqStream.Write(payload, 0, payload.Length)
    reqStream.Close()

    Dim webResponse As System.Net.HttpWebResponse
    webResponse = webRequest.GetResponse()

    Dim reader As System.IO.StreamReader
    reader = New System.IO.StreamReader(webResponse.GetResponseStream())
    Dim xmlDoc As System.Xml.XmlDocument
    xmlDoc = New System.Xml.XmlDocument()
    xmlDoc.LoadXml(reader.ReadToEnd())

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...