Android—Http连接之GET/POST请求

时间:2023-06-08 13:13:50

在Android SDK中提供了Apache HttpClient(org.apache.http.*)模块。在这个模块中涉及到两个重要的类:HttpGet和HttpPost。

   创建步骤:
  1、创建HttpGet(或HttpPost)对象,将要请求的URL通过构造方法传入HttpGet(或HttpPost)对象中;
   2、使用DefaultHttpClient类的execute方法发送HTTP GET或HTTP POST 请求,并返回HttpResponse对象;
   3、通过HttpResponse接口的getEntity方法返回响应信息。

   虽然两者都是按这样的步骤来实现的,但是实际中两者又有些区别,具体代码如下:
   HTTP GET请求:
   String url;
   //第一步,创建HttpGet对象
   HttpGet httpGet = new HttpGet(url);
   //第二步,使用execute方法发送HTTP GET请求,并返回HttpResponse对象
   httpResponse = new DefaultHttpClient().execute(httpGet);
   if (httpResponse.getStatusLine().getStatusCode() == 200)
   {
        //第三步,使用getEntity方法活得返回结果
        String result = EntityUtils.toString(httpResponse.getEntity());
    }

   HTTP POST请求:
   String url;
   //第一步,创建HttpPost对象
   HttpPost httpPost = new HttpPost(url);
   //设置HTTP POST请求参数必须用NameValuePair对象
   List params = new ArrayList();
   params.add(new BasicNameValuePair("bookname", etBookName.getText().toString()));
   //设置httpPost请求参数
   httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
   //第二步,使用execute方法发送HTTP GET请求,并返回HttpResponse对象
   httpResponse = new DefaultHttpClient().execute(httpPost);
   if (httpResponse.getStatusLine().getStatusCode() == 200)
   {
        //第三步,使用getEntity方法活得返回结果
        String result = EntityUtils.toString(httpResponse.getEntity());
    }