【问题标题】:Getting the HttpResponseMessage Content value which is set manually(hard coded in the code)获取手动设置的 HttpResponseMessage 内容值(在代码中硬编码)
【发布时间】:2018-06-22 07:35:11
【问题描述】:

我的应用程序中有一个方法,出于某种原因我必须设置HttpResponseMessage 响应。这是我下面的代码。有 Order 和 OrderDetail 类。

         public void someMethod()
        {
            var response = await SendHttpResponse("123");
            Order objId = new Order();
            objId = JObject.Parse(await response.Content.ReadAsStringAsync()).ToObject<Order>();
            string item = objId.OrderDetail.LastOrDefault<item>().Status

        }

SendHttpResponse 方法,其中 HttpResponseMessage 是硬编码的。

public async Task<HttpResponseMessage> SendHttpResponse(string orderid)
{
    Task<Order> result = CreateOrder(orderid);
    string jsonString = JsonConvert.SerializeObject(result);
    return new HttpResponseMessage(HttpStatusCode.OK)
    { Content = new StringContent(jsonString) };// assuming something wrong with this conversion
}

我有一个 Order 类和 OrderDetail 类。

public async Task<Order> CreateOrder(string OrderId)
{
    Order order = new Order();
    order.id = OrderId;
    order.date = DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss");

    OrderDetail od = new OrderDetail();
    od.item = "xyz";
    od.rate = 12;
    List<OrderDetail> lst = new List<OrderDetail>();
    lst.Add(od);
    order.OrderDetail = lst;
}

现在我面临的问题是,在 SomeMethod 中,item 是 null 而不是 xyz。当我调试它时,我可以看到 CreateOrder 方法没有任何异常地执行,并且数据也转换为 JSON 格式,但是这些值没有正确返回到SomeMethod。我假设,我在SendHttpResponse 中所做的转换是错误的,应该以不同的方式进行。

谁能帮我更正这段代码?非常感谢!

【问题讨论】:

    标签: c# .net httpclient


    【解决方案1】:

    CreateOrder(orderid); 返回 Task,而不是 Order 对象。

    所以你必须await它。

    Order result = await CreateOrder(orderid); //
    

    您也忘记在 CreateOrder 方法中返回订单。

    您也忘记将async 添加到public void someMethod()。

    所以你的代码应该不会编译成功。

    【讨论】:

    • 并更改 someMethod 以返回 Task 而不是 void,即使这不是绝对必要的。 async void 方法只能用作事件处理程序
    • 当我将 CreateOrder 更改为 await CreateOrder 时,出现编译错误“无法将 Namespace.Order 转换为 System.Threading.Tasks.Task”
    • 在我写的时候改变整行。不仅仅是添加等待。
    猜你喜欢
    • 2021-10-04
    • 2010-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    相关资源
    最近更新 更多