在客户端中检索WCF Rest响应

时间:2011-11-09 20:21:12

标签: wcf rest

我正在使用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主体的数据......

这似乎是一个显而易见的事情,但我似乎无法在互联网上找到任何信息或其他任何信息。

2 个答案:

答案 0 :(得分:0)

我相信会抛出WebException

因此,如果您明确捕获该类型,则可以在异常上使用WebException.Response属性(这是一个HttpWebReponse),您可以从其流中获取内容。

答案 1 :(得分:0)

您是否有任何特定原因要使用ChannelFactory与REST服务进行交互。我认为使用HttpWebRequest对象来调用REST服务更容易,并且在服务器上抛出错误时可以获得respone流。

还可以查看RestSharp API,通过它可以完成读取响应流的任务。

相关问题