我创建了一些 web api,当发生错误时,api 返回使用 CreateErrorResponse 消息创建的 HttpResponseMessage。像这样的东西:
return Request.CreateErrorResponse(
HttpStatusCode.NotFound, "Failed to find customer.");
我的问题是我无法弄清楚如何在消费者应用程序中检索消息(在本例中为“找不到客户。”)。
这是消费者的示例:
private static void GetCustomer()
{
var client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
string data =
"{\"LastName\": \"Test\", \"FirstName\": \"Test\"";
var content = new StringContent(data, Encoding.UTF8, "application/json");
var httpResponseMessage =
client.PostAsync(
new Uri("http://localhost:55202/api/Customer/Find"),
content).Result;
if (httpResponseMessage.IsSuccessStatusCode)
{
var cust = httpResponseMessage.Content.
ReadAsAsync<IEnumerable<CustomerMobil>>().Result;
}
}
任何帮助是极大的赞赏。
最佳答案
获取消息的一种方法是:
((ObjectContent)httpResponseMessage.Content).Value
这将为您提供一个字典,其中还包含
Message
.更新
引用官方页面:
http://msdn.microsoft.com/en-us/library/jj127065(v=vs.108).aspx
您必须改变读取成功响应和错误响应的方式,因为其中一个显然是 StreamContent,另一个应该是 ObjectContent。
更新 2
你试过这样做吗?
if (httpResponseMessage.IsSuccessStatusCode)
{
var cust = httpResponseMessage.Content.
ReadAsAsync<IEnumerable<CustomerMobil>>().Result;
}
else
{
var content = httpResponseMessage.Content as ObjectContent;
if (content != null)
{
// do something with the content
var error = content.Value;
}
else
{
Console.WriteLine("content was of type ", (httpResponseMessage.Content).GetType());
}
}
最终更新(希望...)
好的,现在我明白了 - 只需尝试这样做:
httpResponseMessage.Content.ReadAsAsync<HttpError>().Result;
关于asp.net-web-api - 如何从 WEB API 检索消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14564074/