如何从远程站点获取错误代码,以便每次都可以返回远程站点输出。现在远程站点给我状态400.我知道在响应之后有更多信息,但我的应用程序拒绝不显示它因为错误在线。由于状态码400,安娜错误就在那里。
- >> response = request.GetResponse()
Public Function SendPostData(ByVal site As String, ByVal message As String)
Dim request As WebRequest
request = WebRequest.Create(site)
Dim response As WebResponse
Dim postData As String = message
Dim data As Byte() = Encoding.UTF8.GetBytes(postData)
request.Method = "POST"
request.ContentType = "application/x-www-form-urlencoded"
request.ContentLength = data.Length
Dim stream As Stream = request.GetRequestStream()
stream.Write(data, 0, data.Length)
stream.Close()
response = request.GetResponse()
Dim sr As New StreamReader(response.GetResponseStream())
Return "" & sr.ReadToEnd
End Function
答案 0 :(得分:0)
你快到了。你只需要继续阅读流,直到你到达终点:
Dim sb As New StringBuilder
Using reader As New StreamReader(rsp.GetResponseStream)
Do Until reader.EndOfStream
sb.Append(reader.ReadLine())
Loop
End Using
Return sb.ToString
以下是我为处理此类事情而编写的方法:
Public Shared Function PostWebData(ByVal uri As String, ByVal data As String, Optional contentType As String = "text/xml", Optional useDefaultProxy As Boolean = True) As String
Dim req As WebRequest = Nothing
Dim rsp As WebResponse = Nothing
Dim sb As New StringBuilder
Try
req = WebRequest.Create(uri)
If useDefaultProxy Then req.Proxy = WebRequest.DefaultWebProxy
req.Method = "POST"
req.ContentType = contentType
Using writer As New StreamWriter(req.GetRequestStream)
writer.WriteLine(data)
writer.Close()
End Using
rsp = req.GetResponse
Using reader As New StreamReader(rsp.GetResponseStream)
Do Until reader.EndOfStream
sb.Append(reader.ReadLine())
Loop
End Using
Return sb.ToString
Catch ex As Exception
Return ""
Finally
If Not req Is Nothing Then req.GetRequestStream.Close()
If Not rsp Is Nothing Then rsp.GetResponseStream.Close()
End Try
End Function