[英]Any way to access response body using WebClient when the server returns an error?
使用WebClient类时,如果响应状态为4xx,是否可以访问响应主体,例如:
(webClient, evt) => // this is the event handler for the UploadStringCompleted event
{
if (evt.Error != null)
{
// can I access the response text?
}
});
由于evt.Error是WebException(而不是普通的Exception),因此,这就是我要做的(请原谅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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.