Articles of apache httpclient 4.x

http连接超时问题

当我尝试使用连接到url的HttpClient时,我遇到了一个问题。 即使在我设置连接超时后,http连接也需要更长的时间才能超时。 int timeoutConnection = 5000; HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection); int timeoutSocket = 5000; HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket); 它在大多数时候都很完美。 然而,每隔一段时间,http连接就会永远运行并忽略setconnectiontimeout ,特别是当手机连接到wifi时,手机处于空闲状态。 因此,在手机闲置后,我第一次尝试连接时,http连接忽略了setconnectiontimeout并且永远运行,在我取消它并再次尝试之后,它每次都像魅力一样。 但是有一次它不起作用它会创建一个threadtimeout错误,我尝试使用不同的线程,它工作,但我知道该线程已运行很长时间。 我明白wifi在空闲时睡觉,但我不明白为什么它忽略了setconnectiontimeout 。 任何人都可以提供帮助,我非常感激

获取NoSuchFieldError INSTANCE org / apache / http / message / BasicHeaderValueParser

我在Android上开发应用程序。 我正在使用httpcore 4.3.3。 我尝试使用ContentType.parse(string)时得到这个 java.lang.NoSuchFieldError: No static field INSTANCE of type Lorg/apache/http/message/BasicHeaderValueParser; in class Lorg/apache/http/message/BasicHeaderValueParser; or its superclasses (declaration of ‘org.apache.http.message.BasicHeaderValueParser’ appears in /system/framework/ext.jar) 我做了一些谷歌搜索,我理解为什么我得到错误,但我不确定如何解决它。 从我读过的内容来看,似乎ContentType试图利用Android附带的BasicHeaderValueParser,而该类还没有INSTANCE字段。 有什么帮助吗? 这些是相关的import: compile(‘org.apache.httpcomponents:httpmime:4.3.6’) { exclude module: ‘httpclient’ } compile ‘org.apache.httpcomponents:httpcore:4.3.3’

java.lang.NoSuchFieldError:org.apache.http.message.BasicLineFormatter.INSTANCE

美好的一天! 我需要帮助! 我开发应用程序的Android与集成的IIS(SharePoint)。 而当我运行这个代码(代码2),我得到错误 java.lang.NoSuchFieldError:org.apache.http.message.BasicLineFormatter.INSTANCE 在onCreate(代码1)的方法firstActivity中运行此代码 版本httpclient – 4.3; 代码1 new Thread(new Runnable() { @Override public void run() { new HttpsClietn(); } }).run(); 代码2 package com.example.HttpsMy; import android.os.Environment; import org.apache.http.auth.AuthScope; import org.apache.http.auth.NTCredentials; import org.apache.http.client.CredentialsProvider; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.protocol.HttpClientContext; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.client.HttpClientBuilder; import javax.net.ssl.KeyManagerFactory; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import […]

如何在Android中使用DefaultHttpClient?

如何在Android中使用DefaultHttpClient?

Android项目使用httpclient – > http.client(apache),post / get方法

我正在做一个Android项目的获取和发布的方法,我需要“翻译”HttpClient的3.x到HttpClient的4.x(由Android使用)。 我的问题是,我不知道我做了什么,我没有find一些方法的“翻译”… 这是我做的HttpClient 3.x和( – >)HttpClient 4.x“翻译”,如果我find了它(只有党派问我问题): HttpState state = new HttpState (); –> ? HttpMethod method = null; –> HttpUriRequest httpUri = null; method.abort(); –> httpUri.abort(); //httpUri is a HttpUriRequest method.releaseConnection(); –> conn.disconnect(); //conn is a HttpURLConnection state.clearCookies(); –> cookieStore.clear(); //cookieStore is a BasicCookieStore HttpClient client = new HttpClient(); –> DefaultHttpClient client = new […]

在android中更改多部分file upload中每个突发的长度

有没有办法限制在org.apache.http.entity.mime.MultipartEntity中的MultipartEntity上发送的零件大小。 我正在使用凌乱的networking请求。 我已经尝试扩展排球请求类,并重写getbody()方法。

javax.net.ssl.SSLPeerUnverifiedException:没有同行证书,而我正在与谷歌的地方api在Android

我正面临一个javax.net.ssl.SSLPeerUnverifiedException:没有同行证书exception,同时在Android模拟器中使用谷歌的地方api.Below是我的url: https://maps.googleapis.com/maps/api/place/search/json?&location=28.632808,77.218276&radius=1000&sensor=false&key=AIzaSyC3y3fOMTqTkCjNNETQTCKustG7BRk_eVc 当我简单地,粘贴在浏览器地址栏上面的url,它简单地给JSONstring。所以,我认为没有任何证书authentication的需要。 做了这么多的search和投入2-3天后,我使用了SSLSocketFacory类的org.apache.http.conn.ssl.SSLSocketFactory包来避免对等证书的错误。 下面是我的代码: public static HttpClient wrapClient(HttpClient base) { try { SSLContext ctx = SSLContext.getInstance("TLS"); X509TrustManager tm = new X509TrustManager() { public void checkClientTrusted(X509Certificate[] xcs, String string) throws CertificateException { } public void checkServerTrusted(X509Certificate[] xcs, String string) throws CertificateException { } public X509Certificate[] getAcceptedIssuers() { return null; } }; X509HostnameVerifier verifier = new […]

IllegalArgumentException当在Android中instanciating HttpClient

在谷歌播放控制台,我可以看到来自用户抱怨的崩溃报告,因为我的应用程序刚开始后崩溃。 原因似乎是instanciating HttpClient时引发的exception。 我究竟做错了什么 ? 以下是堆栈跟踪摘录: java.lang.IllegalArgumentException:androidApplicationContext必须不为null! 在org.apache.http.impl.client.naf.gba.connector.GbaServiceConnectorSynchronizedSingleton.instance(GbaServiceConnectorSynchronizedSingleton.java:76) 在org.apache.http.impl.client.naf.gba.shared.KeeperManager.init(KeeperManager.java:68) 在org.apache.http.impl.client.naf.auth.NafHttpAuthStrategyDefault.initSharedResources(NafHttpAuthStrategyDefault.java:119) 在org.apache.http.impl.client.naf.auth.NafHttpAuthStrategyDefault。(NafHttpAuthStrategyDefault.java:95) 在org.apache.http.impl.client.AbstractHttpClient。(AbstractHttpClient.java:168) 在org.apache.http.impl.client.DefaultHttpClient。(DefaultHttpClient.java:113)

为什么DefaultHttpClient通过半closures套接字发送数据?

我使用Android(2.3.x)上的ThreadSafeClientConnManager DefaultHttpClient发送HTTP请求到我的REST服务器(embedded式Jetty)。 在大约200秒的空闲时间之后,服务器用[FIN]closuresTCP连接。 Android客户端使用[ACK]进行响应。 这应该并且确实将套接字置于半closures状态(服务器仍在监听,但不能发送数据)。 我希望当客户端尝试再次使用该连接(通过HttpClient.execute )时, DefaultHttpClient会检测到半closures状态,closures客户端的套接字(因此发送它[FIN / ACK]来结束closures) ,并为请求打开一个新的连接。 但是,这是一个问题。 而是通过半封闭套接字发送新的HTTP请求。 只有在发送完成后,客户端检测到半closures状态并closures套接字(将[FIN]发送到服务器)。 当然,服务器不能响应请求(它已经发送了它的[FIN]),所以客户端认为请求失败,并通过一个新的套接字/连接自动重试。 最终结果是服务器查看并处理请求的两个副本。 有想法该怎么解决这个吗? (我的服务器用第二个副本做了正确的事情,但我很烦恼有效负载传输了两次。) 当第一次尝试写入新的HTTP数据包时,DefaultHttpClient是否应检测到套接字已closures,立即closures该套接字并启动一个新套接字? 在服务器发送一个[FIN]之后的几分钟,一个新的HTTP请求在一个套接字上被发送,我感到困惑。

使用Cookie持久性进行改造

我们,我正在使用改造,我想知道如何透明地处理会话cookie。 为此,我扩展了给定的ApacheClient,并在自定义调用ApacheClient.execute(HttpClient,HttpUriRequest)中使用CookieStore: Client client = new ApacheClient() { final CookieStore cookieStore = new BasicCookieStore(); @Override protected HttpResponse execute(HttpClient client, HttpUriRequest request) throws IOException { // BasicHttpContext is not thread safe // CookieStore is thread safe BasicHttpContext httpContext = new BasicHttpContext(); httpContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore); return client.execute(request, httpContext); } }; RestAdapter restAdapter = new RestAdapter.Builder() .setServer(API_URL) .setClient(client) .build(); […]