有很多关于如何在android中通过Apache HTTP Client或HttpsUrlConnection实现http或https连接的文档,但我想知道是否还有其他协议/通信范例,我可以考虑与其进行通信服务器。 实际上,根据我的经验和阅读,HttpsUrlConnection非常易于设置并提供良好的安全性。但我也想考虑其他因素,如性能和可靠性。
Android上是否还有其他可能对我有用的协议?
答案 0 :(得分:0)
答案 1 :(得分:0)
Apache HTTP Client或HttpsUrlConnection都是可靠的。性能明智的HttpURLConnection比HttpClient快得多。
访问http://openjavafaq.blogspot.in/2009/03/httpclient-vs-httpurlconnection.html
基于以下测试参数 - 测试参数: 15个主题 10循环计数 Connection完成150个请求所需的平均时间:7.61毫秒 HttpClient完成150个请求所需的平均时间:85.89毫秒 即使认为HttpURLConnection的性能要快得多,它也不能很好地控制Http连接的管理,但在生产环境中使用HttpClient总是可行的,当时需要大量的事务处理。
有关比较,请参阅:http://www.innovation.ch/java/HTTPClient/urlcon_vs_httpclient.html
答案 2 :(得分:0)
你提到http客户端和通信协议有两件事。
设计一个你必须考虑的系统
1)通信协议
然后
2)客户端/服务器软件
去http协议你有客户端(okhttp是其中之一)和支持其各种版本/变体的服务器作为最广泛使用的http 1.1' new' http 2.0,spdy,http streaming等。如果你打算做消息/事件驱动的应用程序,你可能想尝试mqtt或WebSockets。 这些都可以在它的顶部(实际上在下面)附带某种安全协议,这可能会引入一些性能下降。这些都可以在TCP之上工作。
有人错误地将UDP与HTTP进行比较,其中更适合比较TCP_vs_UDP。我们已经提到了UDP的一些缺点,但QUIC可以处理这些缺点。
所以有很多选择,取决于你想做什么以及你可以做什么。
回到你选择的方式似乎决定1)可能很困难。 所以你可以做的就是尽可能好地决定你想要使用的协议,还要选择一个聪明的协议。如果您改变主意,可以处理这些内容的客户,例如okhttp或netty。您还可以选择类似模块化解决方案的东西,它可以插入和播放不同的实现,而您的代码可以使调用保持不变(netty也可以在某种程度上执行此操作),例如volley或jus(基于凌空的想法)。在这种情况下,你保持灵活性。
更新:此question
还提供了有关各种协议的详细信息