繁体   English   中英

从HTTP POST检索响应主体

[英]Retrieving Response Body from HTTP POST

我正在发布API,它返回409响应代码以及如下所示的响应正文:

    { 
       "message": "Exception thrown.",
       "errorDescription": "Object does not exist"
    }

如何拉出响应主体并对其进行反序列化?

我正在使用HttpClient:

    HttpClient client = new HttpClient();
    client.BaseAddress = new Uri("http://localhost:60129");

    var model = new Inspection
    {
        CategoryId = 1,
        InspectionId = 0,
        Descriptor1 = "test descriptor 121212",
        Name = "my inspection 1121212"
    };

    var serializer = new JavaScriptSerializer();
    var json = serializer.Serialize(model);
    var stringContent = new StringContent(json, Encoding.UTF8, "application/json");

    var result = client.PostAsync("api/Inspections/UpdateInspection", stringContent);

    var r = result.Result;

我似乎很常见,但我很难找到数据在我的结果中的位置。

您可以对具体类型或ReadAsStringAsync的响应内容使用ReadAsAsync<T>来获取原始JSON字符串。

还建议使用Json.Net来处理JSON。

var response = await client.PostAsync("api/Inspections/UpdateInspection", stringContent);

var json = await response.Content.ReadAsStringAsync();

可以创建具体的响应模型

public class ErrorBody { 
   public string message { get; set; }
   public string errorDescription { get; set; }
}

并用于阅读不成功的回复。

var response = await client.PostAsync("api/Inspections/UpdateInspection", stringContent);

if(response.IsSuccessStatusCode) {
    //...
} else {
    var error = await response.Content.ReadAsAsync<ErrorBody>();

    //...do something with error.
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM