简体   繁体   English

使用 jetty Http 客户端发送 Https 请求中的 NullPointerException

[英]NullPointerException In Send Https Request With jetty Http Client

I am using Jetty HTTP Client (v9.2.5) To Send HTTP Request It is Work Fine For HTTP Request {Post,Get,...} But When I send HTTPS Request Post I See This我正在使用 Jetty HTTP 客户端 (v9.2.5) 发送 HTTP 请求,它适用于 HTTP 请求 {Post,Get,...} 但是当我发送 HTTPS 请求后我看到这个

java.util.concurrent.ExecutionException: java.lang.NullPointerException
at org.eclipse.jetty.client.util.FutureResponseListener.getResult(FutureResponseListener.java:118)
at org.eclipse.jetty.client.util.FutureResponseListener.get(FutureResponseListener.java:101)
at org.eclipse.jetty.client.HttpRequest.send(HttpRequest.java:642)

My Function Is我的功能是

private Object sendHttpPOSTRequest(String url, List<Header> headers,
        String content, HttpMethod method) {
    try {
        HttpClient client = new HttpClient();
        client.setMaxConnectionsPerDestination(16);
        client.setAddressResolutionTimeout(5000);
        client.setConnectTimeout(5000);
        client.setMaxRedirects(3);
        client.setFollowRedirects(true);
        client.setExecutor(_executor);
        client.start();
        Request req = client.POST(url).content(
                new StringContentProvider(content));
        if (headers != null)
            req = setHeaders(req, headers);
        req.header(HttpHeader.CONTENT_TYPE, "application/json");

        return req.send();

    } catch (Exception e) {
        e.printStackTrace();
        return "Failed";
    }

}

Whats Wrong?怎么了?

For HTTPS you have to use the httpclient initialization like the following way:对于 HTTPS,您必须使用 httpclient 初始化,如下所示:

// Instantiate and configure the SslContextFactory
SslContextFactory.Client sslContextFactory = new SslContextFactory.Client();

// Instantiate HttpClient with the SslContextFactory
HttpClient httpClient = new HttpClient(sslContextFactory);

// Configure HttpClient, for example:
httpClient.setFollowRedirects(false);

// Start HttpClient
httpClient.start();

You should use (see https://www.eclipse.org/jetty/documentation/current/http-client.html ):您应该使用(参见https://www.eclipse.org/jetty/documentation/current/http-client.html ):

// Instantiate and configure the SslContextFactory
SslContextFactory.Client sslContextFactory = new SslContextFactory.Client();

// Instantiate HttpClient with the SslContextFactory
HttpClient httpClient = new HttpClient(sslContextFactory);

// Configure HttpClient, for example:
httpClient.setFollowRedirects(false);

// Start HttpClient
httpClient.start();

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

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