Как просмотреть ответ HttpWebRequest?

#.net #vb.net #httpwebrequest

#.net #vb.net #httpwebrequest

Вопрос:

 Dim s As HttpWebRequest
Dim username= "username="   HttpUtility.UrlEncode("username")
Dim message = "message="   HttpUtility.UrlEncode("message")
Dim sep = "amp;"
Dim sb As New StringBuilder()
sb.Append(username).Append(sep).Append(message)
s = HttpWebRequest.Create("http://www.website.com/?"   sb.ToString())
s.Method = "GET"
Dim result = s.GetResponse()    
  

Как мне ответить.записать результат на экран?
Я получаю ошибки типа .. Значение типа ‘System.Net.WebResponse’ не может быть преобразовано в ‘String’.

Ответ №1:

s.GetResponse() возвращает WebResponse, который нельзя просто распечатать. Фактические данные ответа находятся в результате.Заголовки и результат.GetResponseStream(). Вам нужно будет прочитать данные из этого (как вы бы прочитали любой поток) в строку, которую вы можете вывести на экран.

Ответ №2:

Похоже, вы создаете базовый прокси. Что вам нужно сделать, как сказал Tridus, так это получить поток ответов, а затем записать содержимое из одного в другой. Я делал это раньше в проекте с открытым исходным кодом, который может вам помочь.

Управляемый прокси-класс Fusion Rewriter

Я знаю, что это C #, но процесс все тот же в VB. И должен выглядеть примерно так:

 Using responseStream = response.GetResponseStream()
    Using bufferStream = New BufferedStream(responseStream, Manager.Configuration.Rewriter.Proxy.BufferSize)
        Dim buffer As Byte() = New Byte(bufferSize - 1) {}

        Try
            While True
                ' make sure that the stream can be read from
                If Not bufferStream.CanRead Then
                    Exit While
                End If

                Dim bytesReturned As Integer = bufferStream.Read(buffer, 0, bufferSize)

                ' if not bytes were returned the end of the stream has been reached
                ' and the loop should exit
                If bytesReturned = 0 Then
                    Exit While
                End If

                ' write bytes to the response
                context.Response.OutputStream.Write(buffer, 0, bytesReturned)
            End While
        Catch exc As Exception
            Manager.Log("Error on response: "   exc.Message, "Proxy")
        End Try
    End Using
End Using
  

Пожалуйста, обратите внимание, что это прямой перевод с моего исходного кода, поэтому вам придется вносить изменения для вашей собственной программы.