Grapevine 帖子请求问题

问题描述 投票:0回答:1

我在控制台应用程序中使用 Grapevine 服务器。 通过 get work 完美打电话。

现在我想通过 post 请求将序列化的订单对象传递到端点,但我收到以下错误消息:

发送了0个请求内容字节,但Content-Length承诺了538

服务器代码(空体):

    [RestResource]
    public class OrderService {

    public OrderService() { }

    [RestRoute(HttpMethod = HttpMethod.POST, PathInfo = "/distribution/saveorder")]
    public IHttpContext SaveOrder(IHttpContext context) {
      
        return context;
    }
}

客户端代码:

public void Test() {

    RestClient client = new RestClient();
    client.Host = "localhost";
    client.Port = 8120;
    RestRequest request = new RestRequest("/distribution/saveorder");
    request.HttpMethod = HttpMethod.POST;
    request.ContentType = ContentType.JSON;

    Order order = new ();
    order.Buyer.Number = "4711";
    OrderItem item = new ();
    item.Article.Number = "1111111";
    item.Quantity = 5;
    order.Items.Add (item);
    item = new ();
    item.Article.Number = "2222222";
    item.Quantity = 20;
 
    request.Payload = JsonSerializer.Serialize(order);

    request.ContentLength = request.Payload.Length;
    var response = client.Execute(request);
}

错误消息非常清楚,但是在哪里/如何输入内容长度 - 或者我是否错误地使用了有效负载?

rest post grapevine
1个回答
0
投票

作为 Grapevine 的维护者,我建议放弃使用

RestRequest
类,转而使用 FluentHttpClient,我也是该类的维护者。新版本的 Grapevine 根本不包含
RestRequest
类。

使用提供的信息向您的端点发送请求将如下所示:

public async Task Test()
{
    // Create your order object
    var order = new Order();

    var client = new HttpClient { BaseAddress = new Uri("http://localhost:8120") };

    var response = await client.UsingRoute("/distribution/saveorder")
        .WithJsonContent(order)
        .PostAsync();

    if (response.IsSuccessStatusCode)
    {
        // Do something with the response
    }
    else
    {
        // Interrogate the response for the error
    }
}
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.