在Android Gradle项目中包括Apache HttpComponents的问题
我尝试使用build.gradle文件将httpmime包含在我的应用程序中,并且一切都可以满足.相反,当应用程序尝试实际使用多理性布置类时,日志上有很多警告级消息,说存在问题. 这是我的build.gradle的摘录: compile('org.apache.httpcomponents:httpmime:4.+') { exclude module: "httpclient" } 这是错误: 10-09 13:39:37.367 2409-2426/com.company.app W/dalvikvm﹕ VFY: unable to resolve static field 6967 (DEFAULT_BINARY) in Lorg/apache/http/entity/ContentType; 10-09 13:39:37.367 2409-2426/com.company.app W/dalvikvm﹕ VFY:
0 2024-04-04
编程技术问答社区
Apache HTTP BasicScheme.authenticate已被废弃?
在Apache HTTP组件4类org.apache.http.impl.auth.basicscheme我注意到该方法: public static Header authenticate( final Credentials credentials, final String charset, final boolean proxy) 已弃用以下信息: /** * Returns a basic Authorization header value for the given * {@link Credentials} and charset. * * @param credentials The credentials to encode. * @param charset The charset to use for encoding the credentials
2 2024-03-29
编程技术问答社区
传递给Java应用的哪些Java属性可以用http代理进行验证?
我有一个Java应用程序,该应用程序正在尝试通过HTTP代理访问Web服务. Java应用程序是第三方应用程序,我们无法访问源代码. 它的启动可以通过传递Java启动参数等外配置. 我想知道一个可以通过的Java属性是什么,以便该应用可以使用登录的用户NTLM凭据来验证代理连接? 当我将https.proxyhost和https.proxyport(即-dhttps.proxyhost = abcd ...提交给JVM命令行)时,我确实看到日志中的差异.现在,它在下面的消息中失败. [WrapperSimpleAppMain] [AuthChallengeProcessor] ntlm authentication scheme selected INFO | jvm 5 | 2015/06/03 14:49:25 | 2015-06-03 14:49:25,380 INFO [WrapperSimpleAppMain] [HttpMethodDirect
0 2024-03-27
编程技术问答社区
如何用HttpComponents发布数组参数
我想用apache http-components(4.1.2) 执行此命令 curl --data "strings[]=testOne&string-keys[]=test.one&strings[]=testTwo&string-keys[]=test.two&project=Test" https://api.foo.com/1/string/input-bulk 目标API需要字符串和 string-keys 参数为 array ,这意味着重复 strings [] 和 string-keys [] 为每个参数. 此curl命令正常工作,但使用HTTP-Component,而我得到的参数完全相同. 也许我做错了什么. List params = new ArrayList(); params.add( new BasicNameValuePair( "project", P
2 2024-02-28
编程技术问答社区
如何使用Apache HttpClient向servlet发送序列化的对象
我有一个Main()类,其中我将一个名为Names的类的对象序列化.我正在使用Apache HttpClient的HttpPost()调用servlet. public static void main(String[] args) { Names names = new Names(); names.setName("ABC"); names.setPlace("Bangalore"); ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("Name.txt")); out.writeObject(names); out.close(); HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("http://localhost:6080
apache httpclient 4.5.1只对非ssl网站进行SSL连接,而且失败了
目前,我正在使用JDK/Tomcat V6上的httpclient 4.2.5,并且运行良好.为了升级,我搬到了JDK/Tomcat V8上的HttpClient 4.5.1,现在如下: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:992) at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403) at sun.security.ssl.SSLSock
0 2024-02-28
编程技术问答社区
如何使用Apache HttpClient 4.2.1或>对网站进行认证?
我是HTTP编程的新手,我正在尝试针对不使用API​​的网站进行身份验证,并且我遇到了一些麻烦.我发现了其他一些似乎与我相似的问题,但是没有一个对我有用的答案. 我尝试了几种不同的方法,但还没有找到一种可行的方法.实际上,我曾经对我有用,但没有检查该代码(我知道 - 我在想什么?).我无法再次回到该工作版本.到目前为止,这是我尝试过的几件事: HttpClient client = new DefaultHttpClient(); //or any method to get a client instance, with a 'threadsafe' connection manager or otherwise Credentials credentials = new UsernamePasswordCredentials(userName, passwd); ((DefaultHttpClient) client).getCredentials
6 2024-02-28
编程技术问答社区
使用Apache Async Http客户端的异步响应流
我正在使用apache async http client从Azure存储中流对象. 我只需要返回与流相关的流的httpresponse对象.我的客户实际上必须从该流中阅读才能在本地存储该文件. so apache async客户端使用基本的assyncresponseconsumer,在调用已完成的回调之前,该consemer实际上在本地内存中缓冲整个文件. 我正在尝试创建自己的AbstractAsyNcresponSecumemer的实现,以便我可以流式传输响应主体,而不是先存储它,但一直没有成功. 这是用于参考的裸露骨头冠军类 - > public class MyConsumer extends` AbstractAsyncResponseConsumer { @Override protected void onResponseReceived(HttpResponse response) throws HttpExce
Apache HttpClient不显示响应的Content-Length和Content-Encoding头信息。
我安装了import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse; import org.apache.hc.client5.http.impl.classic.HttpClients; import com.sun.net.httpserver.Headers; CloseableHttpClient httpclient = HttpClients.createDefault(); HttpGet request = new HttpGet(new URI("https://www.example.com")); CloseableHttpResponse response = httpclient.execute(request); Header[] responseH
Apache HttpClient 4每个代理的持久连接而不是每个路由的持久连接
我的理解,clientConnectionManager的所有实现都坚持基于路线的连接.如果涉及代理,这基本上不会导致持续连接.例如,HTTPClient需要通过使用Fix IP的HTTP代理访问1000个不同的域,它必须至少建立与代理的1000个连接,而不是创建1个持久连接到代理,并重用1000个请求. 我正在模拟访问数千个域的多个用户(假域,所有DNS分配给了几个IPS,解决方案是在代理后发生的,因此与HTTPCLCLIENT无关).上面的行为很快就消耗了当地主机中的所有可用端口,因为我增加了用户和域的#,因此地址绑定错误结果是. 有没有办法使httpclient以代理的方式持续连接? IE. httpclient仅维护指定数量的连接到给定代理. 解决方案 经过深入研究,Apache HTTPClient似乎不支持此行为.我必须修改httpclient/httpcore源才能具有此功能,即.仅基于LocalAddress和第一个代理地址维护持久连接. 我修改的类
4 2024-02-28
编程技术问答社区
Apache HttpClient抛出java.net.SocketException: 如果我把它作为单机使用,连接会被重置
我创建了一个Apache HTTP客户端 CloseableHttpClient client = HttpClients.custom() .setMaxConnPerRoute(25) .setMaxConnTotal(50) .setDefaultRequestConfig(RequestConfig.custom() .setConnectionRequestTimeout(20_000) .build()) .build(); 我将其用作单身人士.我有这样的发送请求的方法: public RestResponse sendPost(String serverUrl, String body) throws RestE
Apache HttpClient获取服务器证书
是否有一种方法可以在请求之后使用Apache httpclient获取身份验证的服务器的SSL证书 - 只需在服务器端上request.getAttribute.getAttribute(" javax.servlet.request.request.x509certificate")? 解决方案 好的,这在某些方面有点元,我希望以任何连接经理的方式来做这件事.我假设您正在使用最新的httpclient(4.2) 运行 所以,您要做的就是向客户端添加Httpresponseinterceptor. ((AbstractHttpClient)client).addResponseInterceptor(new HttpResponseInterceptor() { @Override public void process(HttpResponse response, HttpContext context) throws HttpException, I
0 2024-02-28
编程技术问答社区
在Android中导入一个较新的Apache HttpClient jar
我正在尝试从我的Android客户端发送HTTP/HTTPS POST请求. 问题 为什么我的代码失败? 到目前为止 我创建了一个apache类/httpclient调用.一切都很好: HttpClient httpClient = new DefaultHttpClient(); 我已经读到这种方法已被弃用,所以我已经切换到了新推荐的方法: HttpClient httpClient = HttpClientBuilder.create().build(); Eclipse没有此类,因此我不得不下载Apache HttpClient 4.3.3.我通过将其复制到libs文件夹中并将其添加到我的构建路径(导入HTTPCLIENT,HTTPCLIENT-CACHE,HTTPCORE,HTTPMIME,fluent-HC,Commons-Logging,Commons-Codec). > 错误消息 06-05 02:15:26.946: W
12 2024-02-28
编程技术问答社区
如何用Apache HttpClient启用SSLv3?
sslv3在apache httpclient 以来是4.3.6版本,但我使用版本4.5. 开发人员写了: 那些希望继续使用SSLV3的用户需要明确支持它. 我试图将支持的协议设置为JVM级别,但它不起作用.该示例在Scala中,但这与问题无关: System.setProperty("https.protocols", "SSLv2Hello,SSLv3,TLSv1,TLSv1.1,TLSv1.2") 我的第二次尝试是: val instance: CloseableHttpClient = { val trustStrategy = new TrustStrategy { override def isTrusted(x509Certificates: Array[X509Certificate], s: String) = true } val sslContext = new SSLContextBuilder().loadTrus
0 2024-02-28
编程技术问答社区
HttpAsyncClient 4是如何工作的?
在以前的版本中,HttpClient目标主机已设置为客户端本身.在上一个版本(对于HttpAsyncClient中,是4.1.1)主机都设置为HttpRequest(HttpGet,HttpPost等),每次我执行请求时. 我想使用持久连接,所以我使用HttpAsyncClient.我这样创建并使用它: CloseableHttpAsyncClient client = HttpAsyncClients.createDefault(); client.start(); List> responses = new ArrayList(); for (int i = 0; i
阿帕奇HTTP客户端每个请求有4.3个凭证
我一直在看一个摘要身份验证示例: 4.3.x/示例.html 在我的方案中,有几个发出HTTP请求的线程,每个线程都必须使用自己的凭据集来验证.此外,请考虑此问题可能非常特定于Apache HTTP客户端4.3,4.2可能以不同的方式处理身份验证,尽管我自己没有自己检查.也就是说,有一个实际的问题. 我只想使用一个客户端实例(类的静态成员,即螺纹安全),并给它一个连接管理器来支持几个并发请求.关键是,每个请求将提供不同的凭据,我没有看到每个请求分配凭据的方法,因为在构建HTTP客户端时设置了凭据提供商.从上面的链接: [...] HttpHost targetHost = new HttpHost("localhost", 80, "http"); CredentialsProvider credsProvider = new BasicCredentialsProvider(); credsProvider.setCredentia
4 2024-02-28
编程技术问答社区
对特定的http状态代码强制重试
处理特定网站,有时我会收到带有状态代码403的HTTP响应.我想在这种情况下重新执行请求(因为在我的特定情况下,当该服务器实际上超载时,该服务器会抛出403) .我试图将ResponseHandler与StandardHttpRequestRetryHandler一起使用,但它并没有按照我希望的方式工作.我希望在ResponseHandler中抛出一个例外会触发StandardHttpRequestRetryHandler,但似乎并非如此.如何实现所需功能? 这是一个示例代码,可以说明我的情况: import java.io.IOException; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.
4 2024-02-28
编程技术问答社区
当EntityUtils.toString()返回异常时,是否有办法获得HttpEntity的字符串值?
我一直遇到这种情况,在这种情况下,我会得到一个不好的HTTP响应(如400),但无法查看HTTPRESPONSE对象中的Httpentity.当我使用调试器进行逐步完成时,我可以看到实体具有内容(长度> 0),甚至可以查看内容,但是我看到的只是数字数量(我猜是ASCII代码?)有帮助.我将在实体上调用EntityUtils.toString(),但是我会得到一个例外 - ioexception或某种"对象处于无效状态"的例外.这真的很沮丧!有什么方法可以以人为可读的形式获取此内容? 这是我的代码: protected JSONObject makeRequest(HttpRequestBase request) throws ClientProtocolException, IOException, JSONException, WebRequestBadStatusException { HttpClient httpclient = new Defaul
2 2024-02-28
编程技术问答社区
Apache HttpClient(4.1和更新版本):如何进行基本认证?
如何为HTTPCLIENT库的默认客户端添加基本身份验证?我已经看到了他们使用client.getCredentialProvider()的示例,但是我认为所有这些方法均适用于图书馆版本4.0.1或3.x.是否有一个新的示例说明?非常感谢. 解决方案 我们使用HttpClient进行基本身份验证,但我们不使用CredentialProvider.这是代码: HttpClient client = factory.getHttpClient(); //or any method to get a client instance Credentials credentials = new UsernamePasswordCredentials(username, password); client.getState().setCredentials(AuthScope.ANY, credentials); 更新: 在评论中陈述了HttpClient.getState() m
0 2024-02-28
编程技术问答社区
Apache HttpComponents HttpClient超时
如何在httpcomponents httpclient中设置连接超时?我在以下网址找到了该文档:另外,对SO_TIMEOUT和CONNECTION_TIMEOUT之间差异的解释将很有帮助. 解决方案 在Apache HTTP客户端的4.3版中,对配置进行了重构(再次).看起来像这样的新方法: RequestConfig.Builder requestBuilder = RequestConfig.custom(); requestBuilder.setConnectTimeout(timeout); requestBuilder.setConnectionRequestTimeout(timeout); HttpClientBuilder builder = HttpClientBuilder.create(); builder.setDefaultRequestConfig(requestBuilder.build()); HttpClient client
2 2024-02-28
编程技术问答社区