首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用WCF客户端访问RESTful服务时访问HTTP状态代码

在使用WCF客户端访问RESTful服务时访问HTTP状态代码
EN

Stack Overflow用户
提问于 2011-01-13 13:22:23
回答 2查看 2.8K关注 0票数 1

多亏了this answer,我现在能够使用RESTful客户端成功地调用JSON服务。但是该服务使用HTTP状态码来通知结果。我不确定如何访问这些状态代码,因为我只是在调用服务时在客户端收到一个异常。即使异常也没有HTTP状态码属性。它只是隐藏在异常消息本身中。

所以问题是,当服务被调用时,如何检查/访问响应的HTTP状态码。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-15 02:52:20

为了快速取胜,您可以访问异常中的状态代码,如下所示:

代码语言:javascript
复制
try
{
    client.DoSomething();  // call the REST service
}
catch (Exception x)
{
    if (x.InnerException is WebException)
    {
        WebException webException = x.InnerException as WebException;
        HttpWebResponse response = webException.Response as HttpWebResponse;
        Console.WriteLine("Status code: {0}", response.StatusCode);
    }
}

也许有一个消息检查器的解决方案。但我还没想明白。

票数 1
EN

Stack Overflow用户

发布于 2011-01-15 02:59:00

没有WCF的解决方案是直接使用HttpRequest和DataContractJsonSerializer类:

代码语言:javascript
复制
private T ExecuteRequest<T>(Uri uri, object data)
{
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);

    // If we have data, we use a POST request; otherwise just a GET request.
    if (data != null)
    {
        request.Method = "POST";
        request.ContentType = "application/json";
        DataContractJsonSerializer serializer = new DataContractJsonSerializer(data.GetType());
        Stream requestStream = request.GetRequestStream();
        serializer.WriteObject(requestStream, data);
        requestStream.Close();
    }

    HttpWebResponse response = (HttpWebResponse)request.GetResponse();

    DataContractJsonSerializer deserializer = new DataContractJsonSerializer(typeof(T));
    Stream responseStream = response.GetResponseStream();
    T result = (T)deserializer.ReadObject(responseStream);
    responseStream.Close();
    response.Close();
    return result;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4677052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档