关于HttpClient的使用
1.如果应用程序需要执行多个HTTP调用,则应该创建一个为所有HTTP请求服务的HttpClient,可以将HttpClient关联到Android的应用程序对象中
2.HttpClient同时发出多个请求可能引起的多线程问题,可以使用ThreadSafeClientConnManager创建DefaultHttpClient
主要代码:
public class ApplicationHc extends Application{
private static final String TAG = "ApplicationHc";
private HttpClient httpClient;
@Override
public void onCreate() {
super.onCreate();
httpClient = createHttpClient();
}
@Override
public void onLowMemory() {
super.onLowMemory();
shutdownHttpClient();
}
@Override
public void onTerminate() {
super.onTerminate();
shutdownHttpClient();
}
//创建HttpClient对象
private HttpClient createHttpClient(){
Log.i(TAG, "Create HttpClient...");
HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, HTTP.DEFAULT_CONTENT_CHARSET);
HttpProtocolParams.setUseExpectContinue(params, true);
SchemeRegistry schReg = new SchemeRegistry();
schReg.register(new Scheme("http",PlainSocketFactory.getSocketFactory(),80));
schReg.register(new Scheme("https",SSLSocketFactory.getSocketFactory(),443));
ClientConnectionManager conMgr = new ThreadSafeClientConnManager(params, schReg);
return new DefaultHttpClient(conMgr,params);
}
//关闭HttpClent
private void shutdownHttpClient(){
if(httpClient !=null && httpClient.getConnectionManager()!=null){
httpClient.getConnectionManager().shutdown();
}
}
public HttpClient getHttpClient(){
return httpClient;
}
}
在Activity中使用:
private String getHttpContent(){
String con = null;
try{
ApplicationHc app= (ApplicationHc)this.getApplication();
HttpClient client = app.getHttpClient();
HttpGet get = new HttpGet();
get.setURI(new URI("http://www.google.com/ig/api?weather=Guangzhou"));
HttpResponse response = client.execute(get);
con = EntityUtils.toString(response.getEntity());
}catch (Exception e) {
e.printStackTrace();
}
return con;
}
修改AndroidManifest.xml
<application android:icon="@drawable/icon" android:label="@string/app_name" android:name= ".ApplicationHc">
分享到:
相关推荐
本篇文章将深入探讨如何使用HTTPClient进行多线程分段下载的实践。 首先,我们要理解多线程下载的基本原理。多线程下载是通过将大文件分割成多个小段,每个线程负责下载一个或多个段,这样可以充分利用多核处理器的...
《HttpClient:强大的多线程框架在Android中的应用》 在移动开发领域,尤其是Android平台,与服务器进行数据交互是不可或缺的一部分。HttpClient作为一个历史悠久且功能强大的HTTP客户端库,它以其丰富的特性和灵活...
4、多线程下载:使用RandomAccessFile输出流写 5、多线程下载-断点续传:使用临时文件记录当前下载的数据,下次读取文件开始下载 6、下载显示进度条-ProgressBar 7、在gitbub上面下载已经有支持断点续传功能的代码...
标题中的“用HttpClient写了一个多线程下载软件”意味着我们将探讨如何使用Apache HttpClient库来创建一个支持多线程的文件下载应用。HttpClient是一个强大的Java库,它提供了丰富的HTTP客户端功能,包括请求发起、...
在C#中,我们可以使用`System.Net.WebClient`类或者自定义`HttpClient`实例来实现多线程下载。 异步编程是现代C#的一个重要特性,它允许我们在等待IO操作完成时,不阻塞主线程,提高程序的响应性。在下载工具中,...
通过使用HttpClient的连接池和多线程,我们可以有效地并发执行HTTP GET请求,同时控制并发数量,避免过多的网络连接导致服务器压力过大。这种方式提高了请求效率,减少了资源消耗,并且遵循了最佳实践。
本文将详细讲解如何使用HTTPClient进行POST请求,并探讨在多线程环境下的应用,以及与"Grabticket"这个场景相关的实践。 HTTPClient是由Apache基金会开发的一个开源库,它提供了强大的功能来执行HTTP请求,包括GET...
HttpClient下载数据 图片,string 使用get请求数据
简单实现的源码,不会自动判断断点恢复,需要手动注释掉相应代码。 博文链接:https://calmness.iteye.com/blog/220075
HttpClient多线程网络下载 经典案例源代码
标题 "HttpClient + Spring 实现多线程" 涉及到的是如何在Spring框架中使用Apache HttpClient库来创建一个支持多线程的HTTP客户端服务。Apache HttpClient是一个强大的HTTP客户端API,它提供了丰富的功能来处理HTTP...
在这个小例子中,我们将讨论如何利用HttpClient实现多线程下载,以提高文件下载效率。 首先,我们需要在项目中引入Apache HttpClient的相关依赖。在Maven项目中,可以在pom.xml文件中添加以下依赖: ```xml ...
在C# Winform应用中实现多线程下载是一项常见的任务,尤其在处理大文件或需要提高下载速度的情况下。本文将详细讲解如何利用C#的多线程技术来创建一个Winform应用程序,实现高效的文件下载功能。 首先,我们需要...
在IT行业中,多线程是提高程序性能和利用系统资源的有效手段,特别是在处理I/O密集型任务如文件下载时。C#作为一种强大的编程语言,提供了丰富的多线程支持,使得开发者能够轻松地创建并管理多个执行线程。本文将...
HttpClientGoodies.NET .NET HttpClient的一组有用的实用程序。 安装Install-Package HttpClientGoodies的用途是什么? 这些小而有用的实用程序将使HttpClient的生活变得更加轻松。HttpClientGoodies.NET一组.NET ...
多线程访问网页的部分,通常会使用到HttpClient或者WebClient类。HttpClient是.NET Framework 4.5及更高版本中推荐的HTTP客户端通信工具,它支持异步操作,非常适合多线程环境。程序可能会为每个数字创建一个新的...
同时,需要注意HttpClient不是线程安全的,因此在多线程环境中,每个线程应有自己的HttpClient实例。 6. **处理重定向**: HttpClient默认会自动处理重定向,但你可以通过配置`RedirectStrategy`来改变这一行为。 ...
在多线程环境下,我们需要为每个线程创建一个独立的WebClient或HttpClient实例,以避免并发访问同一资源时可能出现的问题。 线程间的同步也是非常关键的一环。为了避免多个线程同时写入同一文件,可以使用Mutex、...
HttpClient不是线程安全的,因此在多线程环境中,每个线程应拥有自己的HttpClient实例或连接管理器。 最后,Apache HttpClient与Apache Commons Codec和Apache Commons Logging紧密协作。 Commons Codec库提供了...