Java 需要提高Android的HttpClient的性能

Java 需要提高Android的HttpClient的性能,java,android,httpclient,httpurlconnection,Java,Android,Httpclient,Httpurlconnection,大家好, 我的应用程序需要在Android上使用HttpClient(HTTP GET)查找下载小文件所用的时间 我捕获了HttpClient.execute前后的nanoTime,以找出经过的时间。同时,我收集了TCP转储以找出HTTP GET和响应200之间经过的时间 我发现nanoTime的差异比TCP转储的运行时间高30%到50% 是否有任何建议将这种差异降至最低?使用Httpurlconnection 致以最良好的祝愿 Henry Fok如果它是simple GET(未经授权等),我将

大家好,

我的应用程序需要在Android上使用HttpClient(HTTP GET)查找下载小文件所用的时间

我捕获了HttpClient.execute前后的nanoTime,以找出经过的时间。同时,我收集了TCP转储以找出HTTP GET和响应200之间经过的时间

我发现nanoTime的差异比TCP转储的运行时间高30%到50%

是否有任何建议将这种差异降至最低?使用Httpurlconnection

致以最良好的祝愿

Henry Fok

如果它是simple GET(未经授权等),我将使用Socket并实现simple GET方法

使用
HttpURLConnection
。也许您可以使用SPDY提高速度,例如使用,但这必须得到web服务器的支持


顺便问一下,你是如何得到TCP转储的?在安卓设备上?扎根的?或者在您的web服务器上。如果是web服务器,则测量延迟,而不是HttpClient开销。(当然你没有这样做,愚蠢的问题。)

谢谢,我想试试。理论上,没有什么比普通套接字操作更快的了:)我仍然无法找到为什么httpurlconnection和httpclient不能重复使用我以前的TCP连接。但是我试着自己打开TCP套接字。。。它可以工作…测试设备是“根”的,我可以从设备中得到转储。这很奇怪。仔细查看tcp转储后,我发现。。。我的应用程序发送了6个HTTP GET(每200个响应后一个接一个),在每个HTTP GET之前,TCP需要再次同步和确认。那是浪费时间。。。有人了解Android httpclient吗?我的应用程序如何保持TCP连接处于活动状态?它是否设置了
connection:keep-alive
头?我建议您尝试一下HttpURLConnection。简单来说,这不是太多的工作。否则就看一看。我想您无法测量与HttpURLConnection相比的性能差异,但它有一个很好的接口。(与HttpURLConnection相比,所有接口都很好。)看看你的服务器或某个代理是否拒绝保持连接有效,我已经尝试过了。。。httpurlconnection和httpclient也是。我们有iOS应用程序来完成同样的任务。根据iOS应用程序的TCP转储,SYN只发生在第一个HTTP GET开始之前。因此,远程服务器应该是正常的。但是Android应用程序无法重新使用连接。。。