1、在android4中,发起网络http操作,不能在Activity的事件(即主线程)中进行,必须在单独的线程中操作。

另外进行网络操作,需要在manifest文件中增加如下的权限:

<uses-permission android:name="android.permission.INTERNET" />

2、下面给出代码事例

	public void loadData() {
new AsyncTask<String, Void, String>() {
@Override
protected String doInBackground(String... paramsInput) {
String url = "http://10.0.0.5:8080/examples/action";
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("type", paramsInput[0]));
params.add(new BasicNameValuePair("id", paramsInput[1]));
/* 建立HTTPPost对象 */
HttpPost httpRequest = new HttpPost(url); String strResult = "doPostError";
try {
HttpClient httpClient = getHttpClient();
/* 添加请求参数到请求对象 */
httpRequest.setEntity(new UrlEncodedFormEntity(params,
HTTP.UTF_8));
/* 发送请求并等待响应 */
HttpResponse httpResponse = httpClient.execute(httpRequest);
/* 若状态码为200 ok */
if (httpResponse.getStatusLine().getStatusCode() == 200) {
/* 读返回数据 */
strResult = EntityUtils.toString(httpResponse
.getEntity()); } else {
strResult = "Error Response: "
+ httpResponse.getStatusLine().toString();
}
} catch (ClientProtocolException e) {
strResult = "Error Response: " + e.getMessage().toString();
e.printStackTrace();
} catch (IOException e) {
strResult = "Error Response: " + e.getMessage().toString();
e.printStackTrace();
} catch (Exception e) {
strResult = "Error Response: " + e.getMessage().toString();
e.printStackTrace();
}
return strResult;
} @Override
protected void onPostExecute(String result) {
TextView view = (TextView) findViewById(R.id.resultText);
view.setText(result);
super.onPostExecute(result);
} }.execute("query","1");
} private HttpClient getHttpClient() { // 创建 HttpParams 以用来设置 HTTP 参数(这一部分不是必需的) HttpParams httpParams = new BasicHttpParams(); // 设置连接超时和 Socket 超时,以及 Socket 缓存大小 HttpConnectionParams.setConnectionTimeout(httpParams, 20 * 1000); HttpConnectionParams.setSoTimeout(httpParams, 20 * 1000); HttpConnectionParams.setSocketBufferSize(httpParams, 8192); // 设置重定向,缺省为 true HttpClientParams.setRedirecting(httpParams, true); // 设置 user agent String userAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2) Gecko/20100115 Firefox/3.6";
HttpProtocolParams.setUserAgent(httpParams, userAgent); // 创建一个 HttpClient 实例 // 注意 HttpClient httpClient = new HttpClient(); 是Commons HttpClient // 中的用法,在 Android 1.5 中我们需要使用 Apache 的缺省实现 DefaultHttpClient HttpClient httpClient = new DefaultHttpClient(httpParams); return httpClient;
}

 上述代码的loadData方法中,创建一个AsyncTask对象,在对象的doInBackground方法中发起网络操作,获取到操作结果。然后在onPostExecute方法中,利用前面获取到的结果更新界面。

这里的网络操作主要是利用了HttpClient等相关api,位于org.apache.http.client.HttpClient下。

Android学习笔记:利用httpclient和AsyncTask 发起网络http post操作的更多相关文章

  1. Android学习笔记之HttpClient实现Http请求....

    PS:最近光忙着考试了....破组成原理都看吐了....搞的什么也不想干...写篇博客爽爽吧....貌似明天就考试了...sad... 学习笔记: 1.如何实现Http请求来实现通信.... 2.解决 ...

  2. Android学习笔记:多个AsyncTask实例的并发问题

    AsyncTask是Android给开发者提供的一个简单轻量级的多线程类,通过它我们可以很容易新建一个线程让在后台做一些耗时的操作(如IO操作.网络访问等),并在这个过程中更新UI.之所以说它轻量级, ...

  3. 【转】Android 学习笔记——利用JNI技术在Android中调用、调试C++代码

    原文网址:http://cherishlc.iteye.com/blog/1756762 在Android中调用C++其实就是在Java中调用C++代码,只是在windows下编译生成DLL,在And ...

  4. Android学习笔记————利用JDBC连接服务器数据库

    /******************************************************************************************** * auth ...

  5. android学习笔记——利用BaseAdapter生成40个列表项

    RT: main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns ...

  6. .net学习笔记----利用System.Drawing.Image类进行图片相关操作

    C#中对图片的操作主要是通过System.Drawing.Image等类进行. 一.将图片转换为字节流 /// <summary> /// 图片处理帮助类 /// </summary ...

  7. 【转】 Pro Android学习笔记(七四):HTTP服务(8):使用后台线程AsyncTask

    目录(?)[-] 5秒超时异常 AsyncTask 实现AsyncTask抽象类 对AsyncTask的调用 在哪里运行 其他重要method 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注 ...

  8. 【转】 Pro Android学习笔记(九二):AsyncTask(1):AsyncTask类

    文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ 在Handler的学习系列中,学习了如何h ...

  9. 【转】 Pro Android学习笔记(六七):HTTP服务(1):HTTP GET

    目录(?)[-] HTTP GET小例子 简单小例子 出现异常NetworkOnMainThreadException 通过StrictMode进行处理 URL带键值对 Andriod应用可利用ser ...

随机推荐

  1. [jQuery] jQuery如何获取同一个类标签的所有的值

    碰巧在开发的时候遇到这个问题,因为jQuery总是只返回第一个类标签的值,所以无法达到我们的要求. 比如: var btn = jQuery('.btn').val(); 获取的只是第一个类标签为bt ...

  2. 12行代码 让浏览器崩溃,iPhone重启

    <html> <body> <script> var total=""; for (var i=0;i<1000000;i++) {    ...

  3. C语言基础04

    什么叫数组呢?我们的第一反应是很多数组合在一起就是数组,字面意思,当然不仅仅是数字,字符也是可以的. 数组属于构造类型 .指相同类型的若干变量组织起来. 类型说明符 数组名 [常量表达式] int   ...

  4. CSS自学笔记(16):CSS3 用户界面

    CSS3中,也新增了一些关于用户界面的属性,这些属性可以重设元素或者盒子的尺寸.轮廓等等. 新增的部分属性的浏览器支持情况 属性 浏览器支持 resize IE Firefox Chrome Safa ...

  5. @Html.ActionLink 添加样式 html标签

    @Html.ActionLink(item.MessageTitle, "Detail", "News",new { MessageId = item.Mess ...

  6. Windows 打开防火墙上的指定端口

    第一步: 控制面板-->打开防火墙 第二步: 高级设置 第三步: 入站规则--->新建规则 第四步: 第五步: 第六步: 第七步: 第八步:

  7. liunx下NetworkManager导致网卡不能启动

    前几天在客户现场,配置一台系统为redhat 6.0的服务器,这台服务器是IBM x3755,系统是预装的.在把服务器的IP地址配置完成后,使用命令不能启动网卡.提示:弹出界面 eht0:错误:激活链 ...

  8. jQuery学习-事件之绑定事件(六)

    在jQuery中,为了屏蔽event对象在各浏览器中的差异性,它使用了自定的Event对象,如下:  1 jQuery.Event = function( src, props ) {  2      ...

  9. Android 微信分享信息

    随着微信越来越火,越来越多的应用要求有分享到微信的功能.虽然有很多平台都帮集成有分享功能,比如友盟.但是个人觉得友盟集成的东西太多了,自己封装得太过分了,很多资源文件也要带进去,所以感觉不是怎么好,所 ...

  10. hibernate的3种状态

    hibernate的三种状态是瞬态.持久态.脱管态 瞬态:新new来的对象称为瞬态. 持久态:处于该状态的对象在数据库中有一条对应的记录,并拥有一个持久标识. 脱管态:当与某持久对象的session关 ...