- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用CXF 3.1.5,我正在尝试使其与代理一起使用。如果代理没有用户名和密码,则它可以工作;如果代理有用户名和密码,则它不起作用。这是我的代码:
//to create my own http conduit
bus.setExtension(new TLSAndProxySupportedHTTPConduitFactory(settings, HTTPConduitFactory.class);
//to get wsdl definition
Definition definition = bus.getExtension(WSDLManager.class).getDefinition(uri);
TLSAndProxySupportedHTTPConduitFactory 实现了 HTTPConduitFactory,并且会创建一个继承 URLConnectionHTTPConduit 的 TLSAndProxySupportedHTTPConduit,在 TLSAndProxySupportedHTTPConduit 中,代理设置的相关代码如下:
//HTTPClientPolicy settings works
HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
httpClientPolicy.setProxyServer(proxy.getHostName());
httpClientPolicy.setProxyServerPort(proxy.getPort());
this.setClient(httpClientPolicy);
if (proxy.getUserName() != null) {
//ProxyAuthorizationPolicy settings doesn't work
this.getProxyAuthorization().setUserName(proxy.getUserName());
this.getProxyAuthorization().setPassword(proxy.getPassword());
}
请记住,如果代理没有用户名和密码,一切都会正常工作。如果加载 WSDL 定义的目标 URL 以 https 开头(我需要 https),则代理将不起作用。如果它以http开头,那么带有用户名和密码的代理就可以正常工作。
最佳答案
寻找解决方案:
原因是
The Java Secure Socket Extension (JSSE) library from Sun Microsystems lets you access a secure Web server from behind a firewall via proxy tunneling. To do this, the JSSE application needs to set the https.ProxyHost and https.ProxyPort system properties. The tunneling code in JSSE checks for "HTTP 1.0" in the proxy's response. If your proxy, like many, returns "HTTP 1.1", you will get an IOException. In this case, you need to implement your own HTTPS tunneling protocol.
引用:http://www.javaworld.com/article/2077475/core-java/java-tip-111--implement-https-tunneling-with-jsse.html
和 https://community.oracle.com/thread/1534538
然后你可以覆盖 URLConnectionHTTPConduit 的 setupConnection 方法。
@Override
protected void setupConnection(Message message, Address address, HTTPClientPolicy csPolicy) throws IOException {
super.setupConnection(message, address, csPolicy);
HttpURLConnection connection = (HttpURLConnection) message.get(KEY_HTTP_CONNECTION);
decorateHttpsURLConnection((HttpsURLConnection) connection);\
message.put(KEY_HTTP_CONNECTION, connection);
}
在方法decorateHttpsURLConnection中:
httpsConnection.setSSLSocketFactory(new SSLTunnelSocketFactory(getProxy(), sslContext.getSocketFactory()));
关于java - 为 CXF httpConduit 设置 ProxyAuthorizationPolicy 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40079374/
我有一个测试需要花费很多时间并最终超时。我尝试了解决方案 bob 但没有任何效果。该错误仅在测试 PUT 时发生。 我的测试: @Test public void testUpdateUse(){
我正在使用CXF 3.1.5,我正在尝试使其与代理一起使用。如果代理没有用户名和密码,则它可以工作;如果代理有用户名和密码,则它不起作用。这是我的代码: //to create my own http
过去几天我一直坚持这个问题,但没有成功,经过大量谷歌搜索和反复试验后,我又回到了起点,但运气不佳。 我目前正在开发一个通过 JAX-WS 连接到第三方的 Java 应用程序。它们提供了一个 WSDL,
我是一名优秀的程序员,十分优秀!