Articles of apache httpclient 4.x

HttpClient重定向到URL,空格抛出exception

我正在访问一个URL,该URL将我重定向到包含空格的URL。 (使用HttpClient 4.x)如何防止此错误(用%20替换空格而不是+) 08-06 02:45:56.486: WARN/System.err(655): org.apache.http.client.ClientProtocolException 08-06 02:45:56.493: WARN/System.err(655): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:557) 08-06 02:45:56.534: WARN/System.err(655): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:509) 08-06 02:45:56.603: WARN/System.err(655): at com.romcessed.romsearch.searchproviders.DopeRomsConnector$DownloadROMTask.doInBackground(DopeRomsConnector.java:636) 08-06 02:45:56.623: WARN/System.err(655): at com.romcessed.romsearch.searchproviders.DopeRomsConnector$DownloadROMTask.doInBackground(DopeRomsConnector.java:1) 08-06 02:45:56.643: WARN/System.err(655): at android.os.AsyncTask$2.call(AsyncTask.java:185) 08-06 02:45:56.663: WARN/System.err(655): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 08-06 02:45:56.683: WARN/System.err(655): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 08-06 02:45:56.693: WARN/System.err(655): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) 08-06 02:45:56.713: WARN/System.err(655): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) 08-06 02:45:56.713: WARN/System.err(655): […]

在Android 5.0 Lollipop中,HttpClient失败并且Handshake Failed

Android 5.0 Lollipop中的DefaultHttpClient似乎被打破了。 它无法设置与先前版本的Android成功设置的某些网站的连接。 例如,我尝试连接到https://uralsg.megafon.ru //Create httpclient like in https://stackoverflow.com/questions/18523784/ssl-tls-protocols-and-cipher-suites-with-the-androidhttpclient HttpClient client = new DefaultHttpClient(manager, params); HttpGet httpGet = new HttpGet(“https://uralsg.megafon.ru”); HttpResponse client = httpclient.execute(httpGet); 此代码适用于Android 2.3-4.4,但在Android 5.0(设备和模拟器)上失败,错误连接被对等关闭。 当然这是可以理解的,因为Android 5.0尝试将这个旧服务器与TLSv1.2和现代密码连接起来并且它不支持它们。 好的,使用SSL / TLS协议中的示例代码和带有AndroidHttpClient的密码套件,我们将协议和密码限制为TLSv1和SSL_RSA_WITH_RC4_128_MD5 。 现在它失败并出现不同的错误: javax.net.ssl.SSLHandshakeException: Handshake failed caused by error:140943FC:SSL routines:SSL3_READ_BYTES:sslv3 alert bad record mac (external/openssl/ssl/s3_pkt.c:1286 0x7f74c1ef16e0:0x00000003) at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake 当然,这段代码在Android 2.3-4.4上运行顺畅。 我用wireshark检查了流量: 302 4002.147873000 […]

‘org.apache.http.HttpEntity’已弃用。 如何在android studio中解决这个错误?

我正在使用android studio API22,我有这些错误: ‘org.apache.http.HttpEntity’ is deprecated ‘org.apache.http.HttpResponse’ is deprecated ‘org.apache.http.NameValuePair’ is deprecated ‘org.apache.http.client.HttpClient’ is deprecated ‘org.apache.http.client.entity.UrlEncodedFormEntity’ is deprecated ‘org.apache.http.client.methods.HttpPost’ is deprecated ‘org.apache.http.impl.client.DefaultHttpClient’ is deprecated ‘org.apache.http.message.BasicNameValuePair’ is deprecated ‘org.apache.http.params.BasicHttpParams’ is deprecated ‘org.apache.http.params.HttpConnectionParams’ is deprecated ‘org.apache.http.params.HttpParams’ is deprecated ‘org.apache.http.util.EntityUtils’ is deprecated 我怎么解决这个问题?

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 […]