2011-05-24 45 views
0
Dim s As HttpWebRequest 
Dim username= "username=" + HttpUtility.UrlEncode("username") 
Dim message = "message=" + HttpUtility.UrlEncode("message") 
Dim sep = "&" 
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'类型的值无法转换为'字符串'。如何查看HTTPWebRequest响应?

回答

0

s.GetResponse()返回一个WebResponse,这不是您可以打印的东西。实际的响应数据在result.Headers和result.GetResponseStream()中。你需要从那里读取数据(你读取任何流的方式)到一个字符串中,并且你可以输出到屏幕上。

0

这听起来像你正在创建一个基本代理。你需要做的就像Tridus说的那样,得到响应流,然后将内容从一个写到另一个。我之前在一个可以帮助你的开源项目中完成了这项工作。

Managed Fusion Rewriter Proxy Class

我知道这是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 

请注意,这是从我的源直接翻译,所以你将不得不进行自定义你自己的计划。