Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Jetty API客户端发送JSON请求?_Java_Json_Jetty_Httpclient - Fatal编程技术网

Java 如何使用Jetty API客户端发送JSON请求?

Java 如何使用Jetty API客户端发送JSON请求?,java,json,jetty,httpclient,Java,Json,Jetty,Httpclient,我试图使用Jetty HttpClient向服务器发送一个JSON字符串,但是我没有找到任何关于如何做到这一点的好例子,只是请求客户端通过POST发送简单参数 我设法使用ApacheHttpClient发送请求,但是在执行下一个请求时,我遇到了保持会话的问题 //rpcString是类似于json的{“方法”:“登录”,“参数”:[“用户”,“密码”],“id”:“1”}: 实体=新的StringEntity(rpcString,HTTP.UTF_8); HttpPost HttpPost=新的

我试图使用Jetty HttpClient向服务器发送一个JSON字符串,但是我没有找到任何关于如何做到这一点的好例子,只是请求客户端通过POST发送简单参数

我设法使用ApacheHttpClient发送请求,但是在执行下一个请求时,我遇到了保持会话的问题

//rpcString是类似于json的{“方法”:“登录”,“参数”:[“用户”,“密码”],“id”:“1”}:
实体=新的StringEntity(rpcString,HTTP.UTF_8);
HttpPost HttpPost=新的HttpPost(“http://site.com:8080/json/users");
entity.setContentType(“应用程序/json”);
httpPost.setEntity(实体);
client=HttpClientBuilder.create().build();
CloseableHttpResponse响应=(CloseableHttpResponse)client.execute(httpPost);
如果可能的话,我喜欢使用JettyAPI客户机做同样的事情


谢谢

要保留与的会话,您需要创建一次
HttpClient
实例,然后将其重新用于所有请求


我不知道Jetty HTTP客户端API是如何工作的,但一般来说,您只需要构建一个POST请求并添加编码为UTF-8字节的JSON数据作为请求内容。

这个问题确实很老,但我遇到了同样的问题,我就是这样解决的:

        // Response handling with default 2MB buffer
        BufferingResponseListener bufListener = new BufferingResponseListener() {
        @Override
        public void onComplete(Result result) {

            if (result.isSucceeded()) {
                // Do your stuff here
            }

        }
    };        

    Request request = httpClient.POST(url);
    // Add needed headers
    request.header(HttpHeader.ACCEPT, "application/json");
    request.header(HttpHeader.CONTENT_TYPE, "application/json");

    // Set request body
    request.content(new StringContentProvider(JSON_STRING_HERE), "application/json");


    // Add basic auth header if credentials provided
    if (isCredsAvailable()) {
        String authString = username + ":" + password;
        byte[] authEncBytes = Base64.getEncoder().encode(authString.getBytes());
        String authStringEnc = "Basic " + new String(authEncBytes);
        request.header(HttpHeader.AUTHORIZATION, authStringEnc);
    }

    request.send(bufListener);

上面的代码应该可以工作。您会遇到哪些具体错误?是的,它可以工作,但这是一个使用Apache HttpClient而不是Jetty的示例,我喜欢使用Jetty,然后还具有异步功能。@pabl0x我刚刚提供了Jetty版本。这使用了最新的jetty client 9.3.5.v20151012