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

所以问题是,当服务被调用时,如何检查/访问响应的HTTP状态码。
发布于 2011-01-15 02:52:20
为了快速取胜,您可以访问异常中的状态代码,如下所示:
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);
}
}也许有一个消息检查器的解决方案。但我还没想明白。
发布于 2011-01-15 02:59:00
没有WCF的解决方案是直接使用HttpRequest和DataContractJsonSerializer类:
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;
}https://stackoverflow.com/questions/4677052
复制相似问题