Android使用httpclient访问http

  安卓不允许在主线程进行http请求,所以需要先使用AsyncTask实现异步任务。

public class HttpPostTask extends AsyncTask<String,Integer,String> {
    @Override
    protected String doInBackground(String... params) {
        return get(params[0]);
    }

    /**
     * 这里的String参数对应AsyncTask中的第三个参数(也就是接收doInBackground的返回值)
     * doInBackground方法执行结束之后在运行,并且运行在UI线程当中 可以对UI空间进行设置
     */
    @Override
    protected void onPostExecute(String result) {
        callBackService.callback(result);
    }
}

在doinbackground方法里实现你需要执行的任务,任务完成后onPostExecute方法。

实现异步任务之后就可以开始httpclient了。

1.创建一个HttpPost,如果是get请求可以创建HttpGet

2.将你的请求数据添加到entity中,httpclient会自动将他封装到http请求的body中

3.执行excute方法,获得response

4.从response中获取entity,这个entity就是response的body内容

示例代码如下

public String get(String url){
    //将你的url放到post    HttpPost postMethod = new HttpPost(url);
    HttpClient httpClient = new DefaultHttpClient();
    try {
        if(jsonObject!=null){
            //设置http请求的body,这里我传入了json数据
            StringEntity entity=new StringEntity(jsonObject.toString(),"utf-8");
            entity.setContentType("application/json");
            postMethod.setEntity(entity);
        }
        //执行post请求,获得response
        HttpResponse response = httpClient.execute(postMethod);
        
        StringBuilder builder = new StringBuilder();
        //response中获取body里面的内容
        BufferedReader bufferedReader2 = new BufferedReader(
                new InputStreamReader(response.getEntity().getContent()));
        //逐行读取内容
        for (String s = bufferedReader2.readLine(); s != null; s = bufferedReader2
                .readLine()) {
            builder.append(s);

        }

        return builder.toString();
    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return null;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值