Java 创建客户端时使用已创建的配置时,泽西客户端出现Http不支持错误。Https工作正常
我正在使用Jersey客户端对服务器进行RESTAPI调用。以下是相同的代码: 图书馆:org.glassfish.jersey.clientJava 创建客户端时使用已创建的配置时,泽西客户端出现Http不支持错误。Https工作正常,java,jersey-client,Java,Jersey Client,我正在使用Jersey客户端对服务器进行RESTAPI调用。以下是相同的代码: 图书馆:org.glassfish.jersey.client final JerseyStrictSslConfigurationFactory singletonFactory = JerseyStrictSslConfigurationFactory.getDefaultFactory(); final ClientConfig clientConfig = singlet
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对象。因此,基本上,您的配置没有在第二种情况下使用。如果它不适用于您的第一个配置,那么配置肯定有问题。我将检查配置是否适用于第二个配置并进行更新。