Android——HttpClient(get&post)

为了避免繁琐的HttpUrlConnection配置,SDK提供了HttpClient。其中将GET方法链接封装成了HttpGet类,将POST方法封装成HttpPost类。

get连接

get连接的步骤如下:
1. 新建url
2. 新建get型请求
3. 新建Http客户端
4. 使用客户端执行请求
5. 处理返回的结果


post连接

post连接和get连接不同之处就是参数的传递,在post中传递参数需要使用NameValuePair类。
post连接的步骤如下:
1. 新建HttpPost类型的请求
2. 新建保存参数的数据结构
3. 为参数设置编码方式
4. 将参数添加到请求中
5. 新建Http客户端
6. 使用客户端执行请求
7. 处理响应


HttpClient实例

注意:android4.0以后实现网络请求操作必不能在主线程中运行,故采用新建线程调用get和post方法,其次级线程得到的数据通过handler接受message消息传递到主线程。
另外在注册文件中需要添加 INTERNET权限。

public class MainActivity extends Activity {
    TextView tv;
    Button get;
    Button post;
    Handler handler;//处理器接收消息

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tv=(TextView)findViewById(R.id.textView2);
        get=(Button)findViewById(R.id.get);
        post=(Button)findViewById(R.id.post);
        //接受传递过来的消息,并显示出来
         handler = new Handler() {  

                public void handleMessage(Message msg) {  
                    switch (msg.what) { //msg.what是消息标签,标识各消息 
                    case 1:  
                        //在这里可以进行UI操作  
                        //对msg.obj进行String强制转换  
                        String string=(String)msg.obj;  
                        tv.setText(string);  
                        break;  
                    case 2:
                        String string2=(String)msg.obj;  
                        tv.setText(string2);  
                        break;
                    default:  
                        break;  
                    }  
                }  

            };  
        OnClickListener listener=new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO 自动生成的方法存根
                int id=v.getId();
                if(id==R.id.get){
                    //新建线程调用方法
                    Thread thread=new Thread(new Runnable() {

                        @Override
                        public void run() {
                            // TODO 自动生成的方法存根
                            doGet();
                        }
                    });
                    thread.start();
                }
                else
                {
                  Thread thread=new Thread(new Runnable() {

                        @Override
                        public void run() {
                            // TODO 自动生成的方法存根
                            doPost();
                        }
                    });
                    thread.start();

                }
            }
        };
        get.setOnClickListener(listener);
        post.setOnClickListener(listener);
    }

    public void doGet(){
        String url="http://www.baidu.com";
        //新建get型请求
        HttpGet httpRequest=new HttpGet(url);
        //新建Http客户端
        HttpClient httpClient=new DefaultHttpClient();
        try
        {
            //执行请求返回结果
            HttpResponse httpResponse=httpClient.execute(httpRequest);
            //判断结果状态
            if(httpResponse.getStatusLine().getStatusCode()==HttpStatus.SC_OK)
            {
                //得到结果内容
                String result=EntityUtils.toString(httpResponse.getEntity());
                //发送消息
                Message message = new Message();  
                message.what = 1;  
                message.obj=result;  
                handler.sendMessage(message); 
            //  tv.setText(result);
            }
            else
            {
                return;
            }
        }
        catch(ClientProtocolException e)
        {
            e.printStackTrace();
        }
        catch (IOException e) {
            // TODO: handle exception
            e.printStackTrace();
        }   
    }
    public void doPost(){
        String url="http://www.baidu.com";
        //新建post类型请求
        HttpPost httpRequest=new HttpPost(url);
        //新建需要传递参数的数据结构
        List<NameValuePair> params=new ArrayList<NameValuePair>();
        //新建键值对
        BasicNameValuePair pair1=new BasicNameValuePair("param", "AaBb");
        params.add(pair1);
        try{
            //设置编码方式
            HttpEntity entity=new UrlEncodedFormEntity(params, HTTP.UTF_8);
            httpRequest.setEntity(entity);
            //新建http客户端
            HttpClient client=new DefaultHttpClient();
            //执行请求得到的响应
            HttpResponse httpResponse=client.execute(httpRequest);
            if(httpResponse.getStatusLine().getStatusCode()==HttpStatus.SC_OK);
            {
                String result=EntityUtils.toString(httpResponse.getEntity());
                Message message=new Message();
                message.what=2;
                message.obj=result;
                handler.sendMessage(message);
            }
        }
        catch (UnsupportedEncodingException e)
        {
            e.printStackTrace();
        }
        catch (ClientProtocolException e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        catch (IOException e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }
}

GET方式
get方式

POST方式
post方式

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值