android----HttpClient的get,post和图片上传服务器

HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。HttpClient已经应用在很多的项目中,比如Apache Jakarta上很著名的另外两个开源项目Cactus和HTMLUnit都使用了HttpClient。

HttpClient:是一个接口.

特性:

1. 基于标准、纯净的java语言。实现了Http1.0和Http1.1

2. 以可扩展的面向对象的结构实现了Http全部的方法(GET, POST, PUT, DELETE, HEAD, OPTIONS, and TRACE)。

3. 支持HTTPS协议。

4. 通过Http代理建立透明的连接。

5. 利用CONNECT方法通过Http代理建立隧道的https连接。

6. Basic, Digest, NTLMv1, NTLMv2, NTLM2 Session, SNPNEGO/Kerberos认证方案。

7. 插件式的自定义认证方案。

8. 便携可靠的套接字工厂使它更容易的使用第三方解决方案。

9. 连接管理器支持多线程应用。支持设置最大连接数,同时支持设置每个主机的最大连接数,发现并关闭过期的连接。

10. 自动处理Set-Cookie中的Cookie。

11. 插件式的自定义Cookie策略。

12. Request的输出流可以避免流中内容直接缓冲到socket服务器。

13. Response的输入流可以有效的从socket服务器直接读取相应内容。

14. 在http1.0和http1.1中利用KeepAlive保持持久连接。

15. 直接获取服务器发送的response code和 headers。

16. 设置连接超时的能力。

17. 实验性的支持http1.1 response caching。

18. 源代码基于Apache License 可免费获取。 

 

案例效果图:

             

 

  1 public class MainActivity extends Activity implements OnClickListener {
  2 
  3     public static String urls = "http://gpj.zhangwoo.cn/app.php?platform=android&appkey=5a379b5eed8aaae531df5f60b12100cfb6dff2c1";
  4 
  5     private TextView mTextView;
  6     private ImageView imagegvoew;
  7     String resultStr = "";
  8     String resultStr1 = "";
  9     private Bitmap mBitmap = null;
 10 
 11     @Override
 12     protected void onCreate(Bundle savedInstanceState) {
 13         super.onCreate(savedInstanceState);
 14         setContentView(R.layout.activity_main);
 15         initView();
 16     }
 17 
 18     private void initView() {
 19         findViewById(R.id.btn1).setOnClickListener(this);
 20         findViewById(R.id.btn2).setOnClickListener(this);
 21         findViewById(R.id.btn3).setOnClickListener(this);
 22         findViewById(R.id.btn4).setOnClickListener(this);
 23         mTextView = (TextView) findViewById(R.id.Text);
 24         imagegvoew = (ImageView) findViewById(R.id.imagegvoew);
 25 
 26     }
 27 
 28     @Override
 29     public void onClick(View v) {
 30         switch (v.getId()) {
 31         case R.id.btn1:
 32 
 33             Thread visitBaiduThread = new Thread(new VisitWebRunnable());
 34             visitBaiduThread.start();
 35             try {
 36                 visitBaiduThread.join();
 37                 if (!resultStr.equals("")) {
 38                     mTextView.setText(resultStr);
 39                 }
 40             } catch (InterruptedException e) {
 41                 // TODO Auto-generated catch block
 42                 e.printStackTrace();
 43             }
 44 
 45             break;
 46         case R.id.btn2:
 47             Thread visitBaiduThreads = new Thread(new VisitWebRunnables());
 48             visitBaiduThreads.start();
 49             try {
 50                 visitBaiduThreads.join();
 51                 if (!resultStr1.equals("")) {
 52                     mTextView.setText(resultStr1);
 53                 }
 54             } catch (InterruptedException e) {
 55                 // TODO Auto-generated catch block
 56                 e.printStackTrace();
 57             }
 58             break;
 59         case R.id.btn3:
 60 
 61             new DownImgAsyncTask()
 62                     .execute("http://avatar.csdn.net/8/6/0/2_dickyqie.jpg");
 63 
 64             break;
 65         case R.id.btn4:
 66             //Util.addFile("url");//图片路径
 67             break;
 68         default:
 69             break;
 70         }
 71 
 72     }
 73 
 74     /** 这里重写handleMessage方法,接受到子线程数据后更新UI **/
 75     private Handler handler = new Handler() {
 76         @Override
 77         public void handleMessage(Message msg) {
 78             switch (msg.what) {
 79             case 1:
 80                 // 关闭
 81                 imagegvoew.setImageBitmap(mBitmap);
 82                 break;
 83             }
 84         }
 85     };
 86 
 87     class DownImgAsyncTask extends AsyncTask<String, Void, Bitmap> {
 88 
 89         @Override
 90         protected void onPreExecute() {
 91             // TODO Auto-generated method stub
 92             super.onPreExecute();
 93 
 94         }
 95 
 96         @Override
 97         protected Bitmap doInBackground(String... params) {
 98             // TODO Auto-generated method stub
 99             Bitmap b = Util.getImageBitmap(params[0]);
100             return b;
101         }
102 
103         @Override
104         protected void onPostExecute(Bitmap result) {
105             // TODO Auto-generated method stub
106             super.onPostExecute(result);
107             if (result != null) {
108                 imagegvoew.setImageBitmap(result);
109             }
110         }
111 
112     }
113 
114     /***
115      * get
116      * 
117      * @author zq
118      * 
119      */
120     class VisitWebRunnable implements Runnable {
121 
122         @Override
123         public void run() {
124             // TODO Auto-generated method stub
125             HttpClient httpCLient = new DefaultHttpClient();
126             // 创建get请求实例
127             HttpGet httpget = new HttpGet("http://www.baidu.com");
128             try {
129                 HttpResponse response = httpCLient.execute(httpget);
130                 if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
131 
132                     String result = EntityUtils.toString(response.getEntity(),
133                             "UTF-8");
134                     resultStr = result;
135                 }
136             } catch (IOException e) {
137                 // TODO Auto-generated catch block
138                 e.printStackTrace();
139             }
140 
141         }
142 
143     }
144 
145     /***
146      * Post
147      * 
148      * @author zq
149      * 
150      */
151     class VisitWebRunnables implements Runnable {
152 
153         @Override
154         public void run() {
155             // TODO Auto-generated method stub
156             List<NameValuePair> formparams = new ArrayList<NameValuePair>();
157             formparams.add(new BasicNameValuePair("c", "member"));
158             formparams.add(new BasicNameValuePair("a", "getdepartments"));
159             HttpClient client = null;
160             HttpPost request = null;
161             try {
162                 client = new DefaultHttpClient();
163                 request = new HttpPost(urls);
164                 request.setEntity(new UrlEncodedFormEntity(formparams,
165                         HTTP.UTF_8));
166                 HttpResponse response = client.execute(request);
167                 if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
168                     String result = EntityUtils.toString(response.getEntity(),
169                             "UTF-8");
170                     System.out.println(result);
171                     resultStr1 = result;
172                 }
173             } catch (IOException e) {
174                 e.printStackTrace();
175 
176             }
177 
178         }
179 
180     }
181 
182 }

 

记得加网络权限

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

 

完成以上功能需要  httpclient.jar  , httpcore.jar  htttpmime.jar   点击下载即可

 

源码点击下载:https://github.com/DickyQie/android-network-request

 

posted @ 2016-12-10 10:19  切切歆语  阅读(994)  评论(0编辑  收藏  举报