Java 创建客户端时使用已创建的配置时,泽西客户端出现Http不支持错误。Https工作正常

Java 创建客户端时使用已创建的配置时,泽西客户端出现Http不支持错误。Https工作正常,java,jersey-client,Java,Jersey Client,我正在使用Jersey客户端对服务器进行RESTAPI调用。以下是相同的代码: 图书馆:org.glassfish.jersey.client final JerseyStrictSslConfigurationFactory singletonFactory = JerseyStrictSslConfigurationFactory.getDefaultFactory(); final ClientConfig clientConfig = singlet

我正在使用Jersey客户端对服务器进行RESTAPI调用。以下是相同的代码:

图书馆:org.glassfish.jersey.client

final JerseyStrictSslConfigurationFactory singletonFactory = 
    JerseyStrictSslConfigurationFactory.getDefaultFactory();

final ClientConfig clientConfig = 
            singletonFactory.from(SSLMode.RETAIL_INTERNAL, SslConfigurator.getDefaultContext());
    
Client client =  ClientBuilder.newBuilder()
        .withConfig(clientConfig) // passing clientConfig direclty here
        .register(JacksonFeature.class)
        .build();

WebTarget somTarget = client.target("https://postman-echo.com").path("/get");

Response resp = somTarget.queryParam("foo", 1).request(MediaType.APPLICATION_JSON).get();

System.out.println(resp.getStatus());
现在,上面的代码适用于res:200,但是如果将目标从https://更改为http://

WebTarget somTarget = client.target("http://postman-echo.com").path("/get");
我开始发现以下错误:

javax.ws.rs.ProcessingException: org.apache.http.conn.UnsupportedSchemeException: http protocol is not supported
如果需要,将添加完整堆栈跟踪

现在,如果我稍微修改一下上面的代码,并在创建客户机时使用新的clientconfig对象

Client client =  ClientBuilder.newBuilder()
        .withConfig(new ClientConfig(clientConfig)) // created new client config object instead of using clientConfig directly
        .register(JacksonFeature.class)
        .build();
它还与http://一起工作,并为https和http提供200个状态代码


问题:当我们使用新的ClientConfig对象http时,如果我们传递已经创建的ClientConfig对象http不受支持,为什么会发生这种情况呢。构造函数接受
(Ojbect…providers)
。您应该向构造函数传递要注册的提供程序,而不是另一个ClientConfig对象。因此,基本上,您的配置没有在第二种情况下使用。如果它不适用于您的第一个配置,那么配置肯定有问题。我将检查配置是否适用于第二个配置并进行更新。