我正在使用WebChannelFactory<>创建一个通道并与WCF REST Service进行交互。
当出现错误时,我希望从通道中检索响应,以便从响应体中读取错误消息。但是我不知道如何获取响应流。
下面是我的代码:
using (var cf = new WebChannelFactory<T>(new Uri(url)))
{
var channel = cf.CreateChannel();
using (new OperationContextScope(channel as IContextChannel))
{
WebOperationContext.Current.OutgoingRequest.Headers
.Add("x-st-authtoken", HttpUtility.UrlDecode(Constants.General_AuthorizedToken));
WebOperationContext.Current.OutgoingRequest.Headers
.Add("x-st-tesskey", HttpUtility.UrlDecode(Constants.General_SessionKey));
try
{
a(channel);
}
catch (Exception ex)
{
throw new Exception("Status: " + ((int)WebOperationContext.Current.IncomingResponse.StatusCode).ToString());
}
}
}在catch语句中,我希望包含来自响应体的数据...
这似乎是一件显而易见的事情,但我似乎在互联网上找不到任何信息。
发布于 2011-11-10 07:11:09
我相信它会抛出一个WebException。
因此,如果显式捕获该类型,则可以在异常上使用WebException.Response属性(它是一个HttpWebReponse)来获取,且可以从其流中获取内容。
发布于 2011-11-15 17:51:33
您使用ChannelFactory与REST服务交互有什么特别的原因吗?我认为使用HttpWebRequest对象来调用REST服务会更容易,并且当服务器抛出错误时,您可以在那里获得响应流。
还可以查看RestSharp应用程序接口,通过它可以完成读取响应流的任务。
https://stackoverflow.com/questions/8071086
复制相似问题