android菜鸟进阶之路—— HttpClient 的实例

HttpClient 可以完成和 HttpURLConnection 几乎一模一样的效果,但两者之间的用法却有较  大的差别,用法如下,直接贴代码了,在布局文件中是一个按钮和一个TextView,按钮用来发送请求,TextView用来接收服务器返回的消息:
         public class SecondActivity extends Activity implements OnClickListener{
                public static final int SHOW_RESPONSE = 0;
                private Button httpclient_send_request;
                private TextView httpclient_responseText;
                private Handler handler = new Handler(){
                        public void handleMessage(Message msg) {
                                switch (msg.what) {
                                        case SHOW_RESPONSE:
                                        String response = (String) msg.obj;
                                        //  在这里进行UI操作,将结果显示到界面上
                                        httpclient_responseText.setText(response);
                                }
                       }
                };

                @Override
                protected void onCreate(Bundle savedInstanceState) {
                        // TODO Auto-generated method stub
                        super.onCreate(savedInstanceState);
                        setContentView(R.layout.activity_second);
                        httpclient_send_request = (Button) findViewById(R.id.httpclient_send_request);
                        httpclient_responseText = (TextView) findViewById(R.id.tv_httpclient_response);
                        httpclient_send_request.setOnClickListener(this);
                }

                @Override
                public void onClick(View v) {
                        // TODO Auto-generated method stub
                        if(v.getId()==R.id.httpclient_send_request){
                                sendRequestWithHttpClient();
                        }
                }

                private void sendRequestWithHttpClient() {
                        // TODO Auto-generated method stub
                        new Thread(new Runnable(){
                                @Override
                                public void run() {
                                        // TODO Auto-generated method stub
                                        try {
                                                // 1,首先,HttpClient 是一个接口,因此无法创建它的实例,通常情况下都会创
                                                // 建一个 DefaultHttpClient 的实例
                                                HttpClient httpclient = new DefaultHttpClient();
                                                // 2,想要发起一条 GET 请求,就可以创建一个 HttpGet 对象,并传入目标的网络
                                                // 地址,然后调用 HttpClient 的 execute()方法
                                                HttpGet httpGet = new HttpGet(" http://www.baidu.com ");
                                                // 3,调用 HttpClient 的 execute()方法,传入HttpGet或HttpPost对象,得到HttpResponse对象
                                                HttpResponse httpResponse = httpclient.execute(httpGet);
                                                if (httpResponse.getStatusLine().getStatusCode() == 200) {
                                                        // 4,等于200说明请求和响应都成功了
                                                        // 5,调用 getEntity()方法获取到一个 HttpEntity 实例
                                                        HttpEntity entity = httpResponse.getEntity();
                                                        // 6,调用 EntityUtils.toString()这个静态方法将 HttpEntity 转换成字符串
                                                        String response = EntityUtils.toString(entity,"utf-8");
                                                        Message message = new Message();
                                                        message.what = SHOW_RESPONSE;
                                                        //  将服务器返回的结果存放到Message
                                                        message.obj = response.toString();
                                                        handler.sendMessage(message);
                                                }
                                        }catch (Exception e) {
                                                // TODO Auto-generated catch block
                                                e.printStackTrace();
                                        }
                                }
                        }).start();
                }
        }
        代码的具体解释都在注释中说明,注意 第二步代码中给的是GET请求,若为POST请求,则第二步要相应的变化为如下:
         HttpPost httpPost = new HttpPost(" http://www.baidu.com ");
        然后通过一个 NameValuePair 集合来存放待提交的参数,并将这个参数集合传入到一个  UrlEncodedFormEntity中,然后调用 HttpPost的 setEntity()方法将构建好的 UrlEncodedFormEntity  传入,如下所示: 
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("username", "admin"));
        params.add(new BasicNameValuePair("password", "123456"));
        UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params, "utf-8");
        httpPost.setEntity(entity);
接下来的操作就和 HttpGet 一样了,调用 HttpClient 的 execute()方法,并将 HttpPost 对  象传入即可: 
        httpClient.execute(httpPost);
        本文很多内柔源自书本,仅供学习之用。共同进步。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值