在vb.net帖子上处理错误代码

时间:2014-04-23 13:00:18

标签: vb.net httpwebrequest

如何从远程站点获取错误代码,以便每次都可以返回远程站点输出。现在远程站点给我状态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

1 个答案:

答案 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