我希望为Android应用程序创建一个登录表单。我想使用post方法将信息发送到服务器端,由PHP文件处理它;然后验证参数并发回响应。
我查看了使用HttpClient和URLConnection的实现,它们非常相似。在Android应用程序中使用效率更高?
由于 Fabii
答案 0 :(得分:20)
我相信在这种情况下,你可以找到更自然的API。通常,HTTPClient在服务器端应用程序(或可能是批处理应用程序)中更有效,因为它允许您指定多线程连接池,具有最大总连接数,以及每个主机连接数最多(这可确保并发连接到同一主机不会被序列化(HttpUrlConnection的问题))。但是在Android应用程序中,你可能一次只能建立一个连接,所以这没关系。
答案 1 :(得分:19)
我对此做了一些研究, 我已经在Android中使用Apache HttpClient很长一段时间了。 对我来说这看起来很自然,并且认为它会随着时间的推移而得到改善。
另一方面,当我为传统的BlackBerryOS开发时,我一直在使用 HttpURLConnection类。
很明显,在网络环境下,BB的表现优于Android。
HttpClient是一个功能齐全但有缺陷的类,它提供了大量的API /方法。它可用于为Android创建功能齐全的WebBrowser。但它在旧版Android上存在一些问题,而且谷歌没有积极参与其中。
而HttpUrlConnection有一个非常有用的API,它对开发网络客户端应用程序很有用。它在Android 2.3及更高版本上改进了响应缓存和改进的压缩技术。在构建网络客户端应用程序时会重新开始。
“Apache HTTPClient 在Eclair和Froyo上的错误更少。这是这些版本的最佳选择。
对于Gingerbread而言, HttpURLConnection 是最佳选择。其简单的API和小巧的尺寸使其非常适合Android。透明压缩和响应缓存可减少网络使用,提高速度并节省电池电量。新的应用程序应该使用HttpURLConnection;这是谷歌将继续投入精力的地方。“
请参阅详情
http://android-developers.blogspot.in/2011/09/androids-http-clients.html
答案 2 :(得分:9)
根据Android团队的说法,你应该在Gingerbread上使用HttpURLConnection,更好,因为这是他们将投入新的开发工作的地方。
http://android-developers.blogspot.de/2011/09/androids-http-clients.html
编辑:这些天我找到了Square的okhttp,包括SPDY支持和自动重试:https://github.com/square/okhttp
答案 3 :(得分:1)
我通常会推荐namespace A
{
namespace B
{
class C
{
public:
static funcA();
};
}
}
,因为它可以使用JDK进行更新。在一个案例中,我们有一个使用旧版HTTP客户端的呼叫,它不支持TLS v1.2。
但是,我不会直接使用void sample()
{
A::B::C::funcA();
}
,我通常会使用更高级别的API,例如JAX-RS Client或wsimport客户端来连接到另一个站点。
答案 4 :(得分:0)
如果您不想发送和接收大文件,我建议使用HttpClient 开始使用起来要容易得多,互联网上还有更多可用的实例。
注意:这是HttpClient不同于HTTPClient(注意案例),这是另一个供应商的实现。
答案 5 :(得分:0)
虽然该标签专门用于Android,但一般来说HttpURLConnection在Java EE应用程序中也是更好的选择,因为它将利用应用程序服务器附带的HTTP堆栈,其中包括应用程序服务器级别的HTTPS证书配置而不是代码。
它还允许您获取应用程序服务器堆栈提供的最新版本的SSL,而不是使用可能不适用于TLS 1.2的旧版本httpclient