在Android中管理HTTP连接的正确方法

时间:2013-11-19 02:36:13

标签: android httpurlconnection androidhttpclient

我编写了两个处理HTTP请求的程序。我想知道一个人是否比其他人更好 -

程序1(使用HttpURLConnection)

          URL url = new URL("https://www.google.com/");

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

          connection.setRequestMethod("GET");

          connection.setDoOutput(false);

          connection.connect();

          reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));

          stringBuilder = new StringBuilder();

计划2(使用HttpPost)

         DefaultHttpClient httpClient = new DefaultHttpClient();

         HttpPost httpPost = new HttpPost("https://test.com");

         HttpResponse httpResponse = httpClient.execute(httpPost);

         InputStream inputStream = httpResponse.getEntity().getContent();

         InputStreamReader inputStreamReader = new InputStreamReader(inputStream);

同样在程序2中,我使用单例来获取连接对象。但是在程序1中没有全局连接对象,每次发出请求时我都需要重新创建HttpURLConnection对象。如果我走在正确的轨道上,请告诉我。

谢谢

2 个答案:

答案 0 :(得分:0)

我建议您使用Android Asynchronous Http Client库。 然后你可以避免这些基本的东西。我最喜欢的一件事是HTTP请求发生在UI线程之外。

答案 1 :(得分:0)

  

同样在程序2中,我使用单例来获取连接对象。但是在程序1中没有全局连接对象,每次我发出请求时都需要重新创建HttpURLConnection对象。

方法2看起来更简单,但它已经很老了

  

Apache HTTP客户端 - HTTPPost

     

DefaultHttpClient及其兄弟AndroidHttpClient是可扩展的   适用于Web浏览器的HTTP客户端。它们大而灵活   蜜蜂。它们的实现是稳定的,并且它们几乎没有错误。但是   这个API的大尺寸使我们很难在没有它的情况下进行改进   打破兼容性。 Android团队没有积极开展工作   Apache HTTP客户端。

     

<强> HttpURLConnection类

     

HttpURLConnection是一个通用的轻量级HTTP客户端   适合大多数应用。这堂课起初很简陋,但是   其专注的API使我们能够轻松稳步提升。

     

在Froyo之前,HttpURLConnection有一些令人沮丧的错误。

我们选择方法1

  

对于Gingerbread而言,更好的是,HttpURLConnection是最佳选择。它的   简单的API和小巧的尺寸使其非常适合Android。透明   压缩和响应缓存减少网络使用,提高速度和   节省电池。新的应用程序应该使用HttpURLConnection;它是   我们将在哪里投入精力。

方法2

  

Apache HTTP客户端在Eclair和Froyo上的错误更少。这是这些版本的最佳选择。

谢谢,