我正在使用WebChannelFactory<>创建一个频道并与WCF REST服务进行交互。
当出现错误时,我想从通道检索响应,以从响应正文中读取错误消息。但我无法弄清楚如何获得响应流。
这是我的代码:
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语句中,我想要包含Response主体的数据......
这似乎是一个显而易见的事情,但我似乎无法在互联网上找到任何信息或其他任何信息。
答案 0 :(得分:0)
我相信会抛出WebException。
因此,如果您明确捕获该类型,则可以在异常上使用WebException.Response属性(这是一个HttpWebReponse),您可以从其流中获取内容。
答案 1 :(得分:0)
您是否有任何特定原因要使用ChannelFactory与REST服务进行交互。我认为使用HttpWebRequest对象来调用REST服务更容易,并且在服务器上抛出错误时可以获得respone流。
还可以查看RestSharp API,通过它可以完成读取响应流的任务。