1

我编写了两个处理 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 对象。如果我在正确的轨道上,请告诉我。

谢谢你

4

2 回答 2

0

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

于 2013-11-19T04:40:53.270 回答
0

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

方法 2 看起来更简单,但它太老了

Apache HTTP 客户端- HTTPPost

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

HttpURL连接

HttpURLConnection 是一个通用的、轻量级的 HTTP 客户端,适用于大多数应用程序。这个类起步不起眼,但其专注的 API 让我们很容易稳步改进。

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

我们应该在以下情况下选择方法1

对于 Gingerbread 和更好的,HttpURLConnection 是最佳选择。其简单的 API 和小尺寸使其非常适合 Android。透明压缩和响应缓存可减少网络使用、提高速度并节省电池。新应用程序应该使用 HttpURLConnection;这是我们将在未来花费精力的地方。

方法2时

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

谢谢,

于 2013-11-19T05:16:34.213 回答