【问题标题】:Any way to access response body using WebClient when the server returns an error?当服务器返回错误时,有什么方法可以使用 WebClient 访问响应正文?
【发布时间】:2011-12-05 06:04:47
【问题描述】:

有没有办法在使用WebClient类时响应状态为4xx时访问响应体,例如:

(webClient, evt) => // this is the event handler for the UploadStringCompleted event
    {
        if (evt.Error != null)
        {
            // can I access the response text?
        }
    });

【问题讨论】:

    标签: c# .net windows-phone-7.1 webclient


    【解决方案1】:

    由于 evt.Error 是一个 WebException(而不是一个普通的异常),这就是我所做的(请原谅 VB.NET):

    ''' <summary>
    ''' Extends a WebException to include any body text from the HTTP Response in the .Message
    ''' </summary>
    Friend Function ExtendWebExceptionInfo(ex As Exception) As Exception
        Dim wEx As WebException = TryCast(ex, WebException)
        If wEx Is Nothing Then Return ex
    
        Dim exMessage As String = Nothing
        Using reader As New StreamReader(wEx.Response.GetResponseStream, System.Text.Encoding.UTF8)
            exMessage = reader.ReadToEnd
        End Using
        If Not String.IsNullOrWhiteSpace(exMessage) Then
            exMessage = String.Format("{0}{1}{1}The server says:{1}{2}", wEx.Message, vbCrLf, exMessage)
            Return New WebException(exMessage, wEx, wEx.Status, wEx.Response)
        End If
        Return wEx
    End Function
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      • 1970-01-01
      • 2014-02-19
      • 2016-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多