如何使HttpResponse的工作更快?

时间:2012-11-30 04:43:55

标签: java android http httpresponse

我正在研究一个项目,其中“我必须从”服务器“获得4096字节的数据到服务器”每“1毫秒到10毫秒之间”。但它“花费太多时间”即“周围” 300毫秒 - 700毫秒“这导致我的应用程序丢失数据。

我正在使用下面的代码段

HttpClient client = new DefaultHttpClient();
HttpPost request = new HttpPost("http://192.168.1.40/ping");
HttpResponse response = client.execute(request);

HttpResponse只花费太多时间,即大约300ms - 700ms。

如何更快地获得回复?

除此之外,还有什么我可以用来从服务器获得更快的响应呢?

请让我知道任何解决方法或解决方法。

我已经完成了谷歌,经历了DataOutputStreamByteOutputStream之类的其他方式,但没有使用它,它也花费了太多时间HttpResponse

帮助将不胜感激。

4 个答案:

答案 0 :(得分:4)

在您更快地做出回复之前,您需要调查并了解他们目前为何需要很长时间。粗略地说,它可能是:

  • 客户端需要很长时间才能创建请求和/或预处理结果(似乎不太可能......)
  • 一个缓慢的android网络协议栈
  • 您的本地网络(例如WiFi)或您的电信提供商的问题
  • 拥塞/过载的服务器或服务器端网络,或
  • 服务器实现中的一些pessimal。

执行以下操作:

  • 从传统PC上的网络浏览器尝试请求,并使用浏览器的网络开发人员的东西来试图弄清楚请求是否需要花费很长时间/为什么......
  • 查看服务器端日志和/或监视请求负载和时间信息
  • 请提供其他建议

实现SPDY 可能有帮助,但不太可能将响应时间改为500毫秒到几十毫秒。这个问题似乎比“HTTP老而慢”更为根本。同样的推理也适用于人们提出的所有其他建议。

答案 1 :(得分:1)

这是不可能的。您每次都在重新创建连接。

您需要与服务器保持持久连接。尝试创建持久的http连接。

如果这不起作用,您可以尝试发送原始udp数据包(或其他任何内容)。它会更难,但需要更少的时间。

答案 2 :(得分:0)

使用SPDY协议。这样可以缩短您的响应时间。

我认为在您的情况下,您可以使用websockets,这样您就不必每次都创建连接,并且每次都可以使用实时连接。

答案 3 :(得分:0)

如果服务器启用SPDY,则@sheldonCooper应答是正确的。您还可以添加Gzip压缩。它已添加到GingerBread之后的所有请求中,但您可以为以前的SDK版本添加它:http://android-developers.blogspot.fr/2011/09/androids-http-clients.html