首页 > 其他 > 详细

HTTP访问的两种方式:HttpURLConnection和HTTPClient的比较

时间:2014-04-12 22:56:56      阅读:591      评论:0      收藏:0      [点我收藏+]

 

1.概念      

 

      HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能:HttpURLConnection。但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。

 

      除此之外,在Android中,androidSDK中集成了Apache的HttpClient模块,用来提供高效的、最新的、功能丰富的支持 HTTP 协议工具包,并且它支持 HTTP 协议最新的版本和建议。使用HttpClient可以快速开发出功能强大的Http程序。

 

2.区别

 

HttpClient是个很不错的开源框架,封装了访问http的请求头,参数,内容体,响应等等,

 

HttpURLConnection是java的标准类,什么都没封装,用起来太原始,不方便,比如重访问的自定义,以及一些高级功能等。

http://hi.baidu.com/wendaoeryu/item/fc2264add98fbde614329bf0

 

-------------------------------------------------------------------------

使用HttpClient:

NameValuePair nameValuePair1 = new BasicNameValuePair("name", "yang");

NameValuePair nameValuePair2 = new BasicNameValuePair("pwd","123123");

List nameValuePairs = new ArrayList();

nameValuePairs.add(nameValuePair1);

nameValuePairs.add(nameValuePair2);

String validateURL = "http://10.0.2.2:8080/testhttp1/TestServlet";

try {

        HttpParams httpParams = new BasicHttpParams();

        HttpConnectionParams.setConnectionTimeout(httpParams,5000); //设置连接超时为5秒

        HttpClient client = new DefaultHttpClient(httpParams); // 生成一个http客户端发送请求对象

        HttpPost httpPost = new HttpPost(urlString); //设定请求方式

          if (nameValuePairs!=null && nameValuePairs.size()!=0) {

              //把键值对进行编码操作并放入HttpEntity对象中

              httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs,HTTP.UTF_8));

           }

        HttpResponse httpResponse = client.execute(httpPost); // 发送请求并等待响应

          // 判断网络连接是否成功

          if (httpResponse.getStatusLine().getStatusCode() != 200) {

             System.out.println("网络错误异常!!!!");

             return false;

           }

        HttpEntity entity = httpResponse.getEntity(); // 获取响应里面的内容

        inputStream = entity.getContent();  // 得到服务气端发回的响应的内容(都在一个流里面)

        // 得到服务气端发回的响应的内容(都在一个字符串里面)

        // String strResult = EntityUtils.toString(entity); 

      } catch (Exception e) {

   System.out.println("这是异常!");

  }

 

 

使用HttpURLConnection:

 

String validateURL="http://10.0.2.2:8080/testhttp1/TestServlet?name=yang&pwd=123123";

try {

       URL url = new URL(validateUrl); //创建URL对象

       //返回一个URLConnection对象,它表示到URL所引用的远程对象的连接

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

       conn.setConnectTimeout(5000); //设置连接超时为5秒

       conn.setRequestMethod("GET"); //设定请求方式

       conn.connect(); //建立到远程对象的实际连接

       //返回打开连接读取的输入流

       DataInputStream dis = new DataInputStream(conn.getInputStream());  

      //判断是否正常响应数据 

        if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {

           System.out.println("网络错误异常!!!!");

           return  false;

       }

} catch (Exception e) {

   e.printStackTrace();

   System.out.println("这是异常!");

  } finally {

    if (conn != null) {

     conn.disconnect(); //中断连接

    }

HTTP访问的两种方式:HttpURLConnection和HTTPClient的比较,布布扣,bubuko.com

HTTP访问的两种方式:HttpURLConnection和HTTPClient的比较

原文:http://www.cnblogs.com/navy-wang/p/3660554.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!