HttpURLConnection和HttpClient的使用

  做安卓应用开发离不开与网打道,就要用到Http通信。我们常用的http请求方式有POST和GET两种。GET可以获得静态页面,可以把参数放在URL字符串后面,传递给服务器。而POST方法的参数是放在Http请求中传递给服务器。更详细的区别可以参考博文:http://blog.csdn.net/yaojianyou/article/details/1720913/

首先看下HttpURLConnection。HttpURLConnection是继承自URLConnection,对象主要通过URL的openConnection方法获得,如

URL url = new URL("http://www.baidu.com"); 

/**取得HttpURLConnection对象*/

HttpURLConnection urlConn=(HttpURLConnection)url.openConnection();

/**设置输入和输出流*/

urlConn.setDoOutput(true); 

urlConn.setDoInput(true); 

/**设置请求方式为POST*/

urlConn.setRequestMethod("POST"); 

/**POST请求不能使用缓存*/

urlConn.setUseCaches(false); 

/**最后要关闭连接*/

urlConn.disConnection();

不过HttpURLConnection默认使用GET方式,如:
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection(); 
、**得到读取的流*/
InputStreamReader in = new InputStreamReader(urlConn.getInputStream()); 
/**为输出创建BufferedReader*/
 BufferedReader buffer = new BufferedReader(in); 
 String inputLine = null; 
/**循环来读取获得的数据*/
while (((inputLine = buffer.readLine()) != null)) 
    { 
      resultData += inputLine + "\n"; 
    }          
/**关闭流及链接*/
 in.close(); 
urlConn.disconnect();

------------HttpClient----------------------------

Apache提供的HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性
GET方法的操作代码示例如下:

 /**请求地址*/
String httpUrl = ""; 
/**获取HttpGet连接对象*/
 HttpGet httpRequest = new HttpGet(httpUrl); 
 /**取得HttpClient*?
  HttpClient httpclient = new DefaultHttpClient(); 
/**取得HttpResponse*/
 HttpResponse httpResponse = httpclient.execute(httpRequest); 
 /**判断是否请求成功getStatusCode()==200*/
   if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) 
      { 
  /**得到返回的String*
   String strResult = EntityUtils.toString(httpResponse.getEntity()); 
    }  else{ 
        //提示请求错误
     } 
 }
 如果我们使用POST传参时,要使用NameValuePair来保存参数,如:
/**请求URL*/
 String httpUrl = ""; 
  /**用POST方法有获得HttpPost对象*/
 HttpPost httpRequest = new HttpPost(httpUrl); 
 /**必须要用NameValuePair来保存参数*/
List<NameValuePair> params = new ArrayList<NameValuePair>(); 
  /**添加参数值*/
params.add(new BasicNameValuePair("userId", "555555")); 

params.add(new BasicNameValuePair("passWord", "*******")); 
  /**设置字符集*/
 HttpEntity httpentity = new UrlEncodedFormEntity(params, "UTF-8"); 
 /**请求操作*/
  httpRequest.setEntity(httpentity); 
  /**取得HttpClient*/
  HttpClient httpclient = new DefaultHttpClient(); 
/**取得Response*/
 HttpResponse httpResponse = httpclient.execute(httpRequest); 
  /**判断是否连接成功getStatusCode()==200*/
  if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) 
   { 
   /**返回结果*/
     String strResult = EntityUtils.toString(httpResponse.getEntity()); 
      }else{ 
      //提示错误
  } 
 }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。