代码之家  ›  专栏  ›  技术社区  ›  Mutant Bob

如何使用JavaApache HTTPCORE5框架创建HTTP服务器时如何检索邮件的请求主体

  •  -1
  • Mutant Bob  · 技术社区  · 7 年前

    我正在使用创建HTTP服务器 Apache httpcore5 framework . 我正在执行 AsyncServerRequestHandler . 我实现的方法是

    public void handle(Message<HttpRequest, ?> message, ResponseTrigger responseTrigger, HttpContext httpContext)
    

    不幸的是, message 我通过了回报 null 如果我打电话 getBody() . 我需要那个正文,因为它包含post的cgi参数。

    (编辑):我的prepare()方法如下

    public AsyncRequestConsumer<Message<HttpRequest, Void>> prepare(HttpRequest request, HttpContext context)
    //        throws HttpException
    {
        return new BasicRequestConsumer<Void>(new NoopEntityConsumer());
    } 
    

    对于那些阅读速度很快的人来说:我是服务器。我不是问客户如何执行一个帖子。我在问一个服务器如何获得对post主体的访问,以便它能够正确响应。 我怎样才能得到消息正文?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Mutant Bob    7 年前

    托马斯·凯利的问题使我找到了问题所在。通过切换到 implements AsyncServerRequestHandler<Message<HttpRequest, byte[]>> 重写我的 prepare() 作为

    public AsyncRequestConsumer<Message<HttpRequest, byte[]>> prepare(HttpRequest request, HttpContext context)
    {
        if (request.getMethod().equals("GET"))
            return new BasicRequestConsumer(new NoopEntityConsumer()); // is that one client bananas?
    
        AsyncEntityConsumer<byte[]> dataConsumer = new BasicAsyncEntityConsumer();
        return new BasicRequestConsumer<>(dataConsumer);
    }
    

    我可以使用 message.getBody() . if的get分支用于处理一个嵌入的HTTP客户机,如果我使用 BasicAsyncEntityConsumer 用一个GET。