zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    关于Service所需要知道的大部分...
    GCN
    static变量(函数)和普通变量(函数)的区别
    FastGCN论文总结及实现(Tensorflow2.0)
    求相关系数矩阵
    K-means之亚洲杯
    归一化
    多指标综合评价方法汇总
    数据挖掘
    mat函数
  • 原文地址:https://www.cnblogs.com/zhangqie/p/6154993.html
Copyright © 2011-2022 走看看