此处将为大家介绍关于android–如何使用每个应用程序一个HttpClient?的详细内容,并且为您解答有关android多个application的相关问题,此外,我们还将为您介绍关于Androi
此处将为大家介绍关于android – 如何使用每个应用程序一个HttpClient?的详细内容,并且为您解答有关android多个application的相关问题,此外,我们还将为您介绍关于Android 6.0 sdk 23 中使用HttpClient、Android HttpClient、android httpClient (https/http) 的优化构建方式二、Android HttpClient Cookie的有用信息。
本文目录一览:- android – 如何使用每个应用程序一个HttpClient?(android多个application)
- Android 6.0 sdk 23 中使用HttpClient
- Android HttpClient
- android httpClient (https/http) 的优化构建方式二
- Android HttpClient Cookie
android – 如何使用每个应用程序一个HttpClient?(android多个application)
我在不同的活动中使用HttpClients,我想只为应用程序使用一个客户端并将其传递给活动.即使我查看了一些答案,我也无法找到一种方法,只使用一个客户端进行我的几项活动.
你能解释一下如何使用示例代码实现这种模式吗?
谢谢.
解决方法
>使用Singleton模式可以实现客户端的单个实例.
>确保使用线程在后台进行所有下载,不要使用UI线程.
>维护所有下载请求的队列.单个Activity可以有多个请求,可以在填充之前下载各种组件,如数据,图像等.所有这些请求都需要排队并一个接一个地运行.
>如果在HttpClient队列清除之前切换了一个Activity,则应清除队列,以免它停止加载新活动的组件.
希望能帮助到你.
Android 6.0 sdk 23 中使用HttpClient
Android 6.0已经不使用HttpClient了,可以看到已经无法import HttpClient相关的包了,如果你硬要使用,除了下载jar包放在lib外,还有更好的解决办法:http://stackoverflow.com/questions/32153318/httpclient-wont-import-in-android-studio
If you need sdk 23, add this to your gradle:
android {
useLibrary ''org.apache.http.legacy''
}
Android HttpClient
Android4.0 之后对使用网络有特殊要求,已经无法再在主线程中访问网络了,必须使用多线程访问的模式,
android httpClient (https/http) 的优化构建方式二
由于时间原因,这里只构建所有请求 https 都能通过的请求 client
首先定义(重写)信任管理器
public class SSLTrustManager implements javax.net.ssl.TrustManager,
javax.net.ssl.X509TrustManager ,HostnameVerifier{
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public boolean isServerTrusted(
java.security.cert.X509Certificate[] certs) {
return true;
}
public boolean isClientTrusted(
java.security.cert.X509Certificate[] certs) {
return true;
}
public void checkServerTrusted(
java.security.cert.X509Certificate[] certs, String authType)
throws java.security.cert.CertificateException {
return;
}
public void checkClientTrusted(
java.security.cert.X509Certificate[] certs, String authType)
throws java.security.cert.CertificateException {
return;
}
@Override
public boolean verify(String urlHostName, SSLSession session) { //允许所有主机
return true;
}
}
然后封装
public static HttpURLConnection connect(String strUrl) throws Exception {
javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1];
javax.net.ssl.TrustManager tm = new SSLTrustManager();
trustAllCerts[0] = tm;
javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext
.getInstance("SSL");
sc.init(null, trustAllCerts, null);
javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc
.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier((HostnameVerifier) tm);
URL url = new URL(strUrl);
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
return urlConn;
}
测试一下
public void unitest()
{
HttpURLConnection urlConn = connect(''https://github.com/'');
urlConn.setDoInput(true);
urlConn.setRequestMethod("GET");
urlConn.connect();
InputStream is = urlConn.getInputStream();
StringBuffer sb = new StringBuffer();
if(is!=null)
{
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String s = null;
while ((s=br.readLine())!=null)
{
sb.append(s).append("\n");
}
}
System.out.println("Content:\n"+sb.toString());
}
try do it!
Android HttpClient Cookie
解决方法
阅读下面的帖子似乎是在调用执行时必须传递相同的HttpContext.
response = httpClient.execute(httpPost,localContext);
究竟该怎么办就是在这篇文章:Android project using httpclient –> http.client (apache),post/get method
How do I manage cookies with HttpClient in Android and/or Java?
今天的关于android – 如何使用每个应用程序一个HttpClient?和android多个application的分享已经结束,谢谢您的关注,如果想了解更多关于Android 6.0 sdk 23 中使用HttpClient、Android HttpClient、android httpClient (https/http) 的优化构建方式二、Android HttpClient Cookie的相关知识,请在本站进行查询。
本文标签: