在Android客户端中使用URLCOnnection对象和Httppost之间的区别

时间:2012-02-22 00:25:50

标签: android http-post urlconnection

我正在使用URLConnection对象将数据从我的android客户端发送到服务器。

URL url = new URL("http://10.0.2.2:8080/hello");
URLConnection connection = url.openConnection();
connection.setDoOutput(true);
ObjectOutputStream out=new ObjectOutputStream(connection.getOutputStream());
String s="check"+","+susername;
out.writeObject(s);
out.flush();
out.close();

但是我看到很多android程序使用httppost以下列方式发送数据。

HttpClient client=new DefaultHttpClient();
HttpPost httpPost=new HttpPost(LOGIN_ADDRESS);
List pairs=new  ArrayList();
String strUsername=username.getText().toString();
String strPassword=password.getText().toString();
pairs.add(new BasicNameValuePair("username", strUsername));
pairs.add(new BasicNameValuePair("password", strPassword));
httpPost.setEntity(new UrlEncodedFormEntity(pairs));
HttpResponse response= client.execute(httpPost);

请解释两者之间的差异。如何在servlet中接收后一种情况下的数据。请对这个HttpPost做一个简短的解释。在互联网上,我找到的只是代码。请逐步解释HttpPost及其方法,以及如何在servlet中接收数据。链接会很好。

1 个答案:

答案 0 :(得分:9)

这个blog post很好地解释了它们之间的区别(实际上是HttpURLConnection,但这只是URLConnection的一个子类)。本文的一些亮点是:

  • HttpURLConnection可以轻松实现gzip编码
  • HttpURLConnection可以轻松缓存结果
  • HttpURLConnection是更新的并且正在积极开发,所以它只会变得更快更好
  • HttpURLConnection在foryo和pre-froyo平台上有一些恼人的错误
  • 尝试使用HttpClient并且为true。它已存在很长时间了,它可以正常工作
  • HttpClient几乎没有被开发,因为它太旧了,API完全被锁定了。 Android开发人员可以做得更好。

虽然文章的结尾建议在froyo之上的所有平台上使用HttpURLConnection,但我个人喜欢使用HttpClient,无论如何。它对我来说更容易使用,更有意义。但是如果你已经在使用HttpURLConnection,你应该完全继续使用它。从这里开始,它将从Android开发者那里获得很多爱。