android中HttpClient的应用(POST方法)

首先在http://hc.apache.org/downloads.cgi下载HttpClient包

直接看代码

  1 import android.os.Handler;
  2 import android.os.Message;
  3 import android.support.v7.app.AppCompatActivity;
  4 import android.os.Bundle;
  5 import android.util.Log;
  6 import android.view.View;
  7 import android.widget.TextView;
  8
  9 import com.google.gson.Gson;
 10 import com.google.gson.reflect.TypeToken;
 11
 12 import org.apache.http.HttpEntity;
 13 import org.apache.http.HttpResponse;
 14 import org.apache.http.HttpStatus;
 15 import org.apache.http.NameValuePair;
 16 import org.apache.http.client.ClientProtocolException;
 17 import org.apache.http.client.HttpClient;
 18 import org.apache.http.client.entity.UrlEncodedFormEntity;
 19 import org.apache.http.client.methods.HttpGet;
 20 import org.apache.http.client.methods.HttpPost;
 21 import org.apache.http.client.utils.URLEncodedUtils;
 22 import org.apache.http.impl.client.DefaultHttpClient;
 23 import org.apache.http.message.BasicNameValuePair;
 24 import org.apache.http.protocol.HTTP;
 25 import org.apache.http.util.EntityUtils;
 26
 27 import java.io.IOException;
 28 import java.io.UnsupportedEncodingException;
 29 import java.lang.reflect.Type;
 30 import java.util.ArrayList;
 31 import java.util.LinkedList;
 32 import java.util.List;
 33
 34 public class MainActivity extends AppCompatActivity {
 35
 36     @Override
 37     protected void onCreate(Bundle savedInstanceState) {
 38         super.onCreate(savedInstanceState);
 39         setContentView(R.layout.activity_main);
 40         // 开启一个子线程,进行网络操作,等待有返回结果,使用handler通知UI
 41         new Thread(networkTask).start();
 42
 43     }
 44
 45     Handler handler = new Handler() {
 46         @Override
 47         public void handleMessage(Message msg) {
 48             super.handleMessage(msg);
 49             Bundle data = msg.getData();
 50             String val = data.getString("value");
 51             Log.i("mylog", "请求结果为-->" + val);
 52             // TODO
 53             // UI界面的更新等相关操作
 54         }
 55     };
 56
 57     /**
 58      * 网络操作相关的子线程
 59      */
 60     Runnable networkTask = new Runnable() {
 61         @Override
 62         public void run() {
 63             // TODO
 64             // 在这里进行 http request.网络请求相关操作
 65             String TAG = "ABC";
 66
 67             //baseUrl
 68             String url = "http://192.168.8.7/insert.php";
 69
 70             HttpPost request = new HttpPost(url);
 71
 72             //先将参数放入List,再对参数进行URL编码
 73             List<BasicNameValuePair> params = new LinkedList<BasicNameValuePair>();
 74             params.add(new BasicNameValuePair("firstname", "这个是安卓"));
 75             params.add(new BasicNameValuePair("lastname", "这是安卓加进去的"));
 76             params.add(new BasicNameValuePair("age", "66"));
 77
 78             try {
 79                 HttpEntity entity = new UrlEncodedFormEntity(params, "UTF-8");
 80
 81                 request.setEntity(entity);
 82
 83                 HttpClient client = new DefaultHttpClient();
 84
 85                 HttpResponse response = client.execute(request);
 86
 87                 Log.e(TAG, "Response Code: " +
 88                         response.getStatusLine().getStatusCode());
 89
 90                 if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
 91
 92                     String data = EntityUtils.toString(response.getEntity());
 93
 94                 }
 95             } catch (IOException e) {
 96                 Log.e(TAG, "~~~~~~"+e);
 97                 e.printStackTrace();
 98             }
 99             Message msg = new Message();
100             Bundle data = new Bundle();
101             data.putString("value", "请求结果");
102             msg.setData(data);
103             handler.sendMessage(msg);
104         }
105     }
106 }

需要注意的是http请求在安卓3.0后就不能放在MainTread中了

时间: 2024-10-09 17:35:54

android中HttpClient的应用(POST方法)的相关文章

Android中通过注解代替findViewById方法

尊重原创 http://write.blog.csdn.net/postedit/26507351 这篇文章主要讲解注解实现findViewById的功能,首先我们来熟悉一下在java中怎么定义一个注解和解析一个注解 注解的概念是在jdk5.0中提出来的,在java.lang的包中已经定义了三个注解:Override,Deprecated,SuppressWarnings Override相信大家非常熟悉,就是表明这个方法是改写了父类的方法 Deprecated表示在新版本的 jdk中已经不建议

Android 中使用自定义字体的方法

1.Android系统默认支持三种字体,分别为:“sans”, “serif”, “monospace 2.在Android中可以引入其他字体 . <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:Android="http://schemas.android.com/apk/res/android" Android:layout_width="fill

Android中加载位图的方法

Android中加载位图的关键的代码: AssetManager assets =context.getAssets(); //用一个AssetManager 对象来从应用程序包的已编译资源中为工程加载资产 InputStream istream=assets.open("/*位图的名字*/"); BitmapFactory.Options options=new BitmapFactory.Options(); options.inPreferredConfig =Bitmap.Co

Android中播放Gif图片的方法

Android中播放Gif图片的方法. 主要原理是取出Gif中的每一帧图片,分别设置到ImageView上边展示出来 使用到Code.Google上边的一个开源类库GifDecoder,下载不了的可以从我后边给出的Demo中搬运. 准备一个类继承自ImageView重写其构造方法同时传入一个输入流. [java] view plaincopyprint? <span style="font-size:18px;">public class GifDecoderView ex

Android中集成第三方库的方法和问题

声明: 1. 本文参考了网上同学们的现有成果,在此表示感谢,参考资料在文后有链接. 2. 本文的重点在第三部分,是在开发中遇到的问题及解决办法.第一,第二部分为参考网上同学们的成果加以整理而成. 3. 欢迎转载,交流,请尊重作者劳动成果:转载请注明出处,谢谢! Android中使用第三方库可能有两种:Java库.jar和原生库.so/.a,如果只是做上层APK开发,这两种库都可以通过Eclipse集成开发环境进行集成,如果是平台级开发,则都可通过源码集成.本文整理这两种集成方式使用步骤,以下假设

Android中关联源码的方法

这里给大家介绍一个很方便的关联源码的方法. 1.打开Android SDK Manager.把你所使用的版本的API给下载下来,如下图所示... 2.关联源码时,将源码关联到对应API的目录,如: E:\开发者工具\android可能工具包\adt-bundle-windows-x86-20130729\sdk\sources\android-18 这时候,就能关联成功了... Android中关联源码的方法

android中获取root权限的方法以及原理(转)

一. 概述 本文介绍了android中获取root权限的方法以及原理,让大家对android 玩家中常说的“越狱”有一个更深层次的认识. 二. Root 的介绍 1. Root 的目的 可以让我们拥有掌控手机系统的权限,比如删除一些system/app下面的无用软件,更换开关机铃声和动画,拦截状态栏弹出的广告等. 2. Root的原理介绍 谷歌的android系统管理员用户就叫做root,该帐户拥有整个系统至高无上的权利,它可以访问和修改你手机几乎所有的文件,只有root才具备最高级别的管理权限

Android中常用的bitmap处理方法

收集了很多bitmap相关的处理方法,几乎全部应用在项目中,所以特记录下! package com.tmacsky.utils; import java.io.ByteArrayOutputStream; import java.io.IOException; import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import android.gr

android 中HttpClient和URLConnection的区别

分析一: 在研究Volley框架的源码中,发现它在HTTP请求的使用上比较有意思,在Android 2.3及以上版本,使用的是HttpURLConnection,而在Android 2.2及以下版本,使用的是HttpClient.我也比较好奇这么使用的原因,于是专门找到了一位Google的工程师写的一篇博客,文中对HttpURLConnection和HttpClient进行了对比,下面我就给大家简要地翻译一下. 原文地址:http://android-developers.blogspot.co

android中共享全局数据的方法

转自:http://blog.csdn.net/ameyume/article/details/6100756 我们在平时的开发中,有时候可能会需要一些全局数据,来让应用中的所有Activity和View都能访问到,大家在遇到这种情况时,可能首先会想到自己定义一个类,然后创建很多静态成员,不过android已经为我们提供了这种情况的解决方案,下面就来介绍一下: 在Android中,有一个名为Application的类,我们可以在Activity中使用getApplication(),方法来获得,