Tag: apache httpclient 4.x

Apache HttpClient 4.1 – 代理validation

我一直在尝试使用Apaches HttpComponent的httpclient从配置的属性配置代理身份validation的用户和密码,但没有成功。 我找到的所有示例都引用了不再可用的方法和类,例如HttpState和setProxyCredentials 。 那么,有人能举例说明如何配置代理凭证吗?

javax.net.ssl.SSLPeerUnverifiedException:主机名与对等方提供的证书主题不匹配

我在stackoverflow上关注了许多链接并尝试了许多解决方案,但它们都没有为我工作。 我正在使用WSO2 API manager 1.9.1版。 我正面临以下错误: Exception in thread “main” javax.net.ssl.SSLPeerUnverifiedException: Host name ‘XXXXXXXXX’ does not match the certificate subject provided by the peer (CN=localhost, O=WSO2, L=Mountain View, ST=CA, C=US) at org.apache.http.conn.ssl.SSLConnectionSocketFactory.verifyHostname(SSLConnectionSocketFactory.java:465) at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:395) at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:353) at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:134) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353) at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380) at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184) at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88) at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82) at […]

HTTPClient示例 – 线程“main”中的exceptionjava.lang.NoSuchFieldError:INSTANCE

我正在使用Apache的HttpClient组件来实现以下简单程序,我看到以下exception: 线程“main”中的exceptionjava.lang.NoSuchFieldError:INGANCE at org.apache.http.impl.io.DefaultHttpRequestWriterFactory。(DefaultHttpRequestWriterFactory.java:52)at org.apache.http.impl.io.DefaultHttpRequestWriterFactory。(DefaultHttpRequestWriterFactory.java :56)org.apache.http.impl.io.DefaultHttpRequestWriterFactory。(DefaultHttpRequestWriterFactory.java:46)org.apache.http.impl.conn.ManagedHttpClientConnectionFactory。(ManagedHttpClientConnectionFactory.java:72)org.apache.http。位于org.apache.http.impl.conn.ManagedHttpClientConnectionFactory。(ManagedHttpClientConnectionFactory.java:59)的orl.apache.http.impl.conn.PoolingHttpClientConnectionManager $ InternalConnectionFactory中的impl.conn.ManagedHttpClientConnectionFactory。(ManagedHttpClientConnectionFactory.java:84)。(PoolingHttpClientConnectionManager) .java:487)org.apache.http.impl.conn.PoolingHttpClientConnectionManager。(PoolingHttpClientConnectionManager.java:147)org.apache.http.impl.conn.PoolingHttpClientConnectionMana ger。(PoolingHttpClientConnectionManager.java:136)org.apache.http.impl.conn.PoolingHttpClientConnectionManager。(PoolingHttpClientConnectionManager.java:112)atg.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:726)在com.starwood.rms.controller.property.HttpExample.main(HttpExample.java:14) 公共类HttpExample { public static void main(String [] args){ HttpClient客户端= HttpClientBuilder.create()。build(); HttpGet request = new HttpGet(“https://www.google.com/?q=java”); 尝试{ HttpResponse response = client.execute(request); 的System.out.println(response.getStatusLine()); } catch(例外e){ e.printStackTrace(); } } } 我在用 HttpClient的-4.3.3.jar 的HttpCore-4.3.2.jar 有任何想法吗?

java.net.SocketException:打开的文件太多

我有一个java应用程序运行得很好(在Ubuntu 10.04上)几个小时,直到它命中“java.net.SocketException:太多打开的文件”。 可以在此处找到Sender.java的代码 是因为我为每个线程创建了一个新的HttpPut和HttpPost实例吗? 我正在使用apache-commons HTTPClient 4。 这是exception日志: java.net.SocketException: Too many open files at java.net.Socket.createImpl(Socket.java:414) at java.net.Socket.connect(Socket.java:544) at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:123) at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:133) at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:149) at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:108) at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:415) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:641) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:576) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:554) at com.marketplace.io.Sender.doBasicHttpPost(Sender.java:434) at com.marketplace.io.Sender.appVisualExists(Sender.java:223) at com.marketplace.io.Sender.addVisualToCollection(Sender.java:350) at com.marketplace.service.ImageThread.run(ImageThread.java:136) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:636)

Apache HTTPClient SSLPeerUnverifiedException

使用Apache HttpClient 4.2.1。 使用从基于表单的登录示例复制的代码 http://hc.apache.org/httpcomponents-client-ga/examples.html 访问受SSL保护的登录表单时出现exception: Getting library items from https://appserver.gtportalbase.com/agileBase/AppController.servlet?return=blank javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated Closing http connection at sun.security.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:397) at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:128) at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:572) at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180) at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294) at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:640) at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:479) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:784) 据我所知,证书很好(参见堆栈跟踪前的URL),没有过期 – 浏览器不会抱怨。 我已经尝试将证书导入我的密钥库了 如何使用Apache HttpClient处理无效的SSL证书? 没有变化。 我相信你可以创建一个自定义SSLContext来强制Java忽略错误,但我宁愿修复根本原因,因为我不想打开任何安全漏洞。 有任何想法吗?

如何在apache HttpClient上设置TLS版本

如何在HttpClient上更改支持的TLS版本? 我正在做: SSLContext sslContext = SSLContext.getInstance(“TLSv1.1”); sslContext.init( keymanagers.toArray(new KeyManager[keymanagers.size()]), null, null); SSLSocketFactory socketFactory = new SSLSocketFactory(sslContext, new String[]{“TLSv1.1”}, null, null); Scheme scheme = new Scheme(“https”, 443, socketFactory); SchemeRegistry schemeRegistry = new SchemeRegistry(); schemeRegistry.register(scheme); BasicClientConnectionManager cm = new BasicClientConnectionManager(schemeRegistry); httpClient = new DefaultHttpClient(cm); 但是当我检查创建的套接字时,它仍然说支持的协议是TLSv1.0,TLSv1.1和TLSv1.2。 实际上,我只是希望它停止使用TLSv1.2,对于这个特定的HttpClient。