繁体   English   中英

HttpTransportSe.call()方法花费一分钟进行Web服务调用

[英]HttpTransportSe.call() method taking up to a minute for web service call

我从我的Android应用程序调用Web服务。 我通过应用程序对此服务进行了许多不同的调用,并且每个调用都在不到一秒的时间内返回数​​据,除了一个。 即使实际的Web服务调用接近即时,我的一个呼叫也可能需要一分钟才能返回数据。 该行出现问题:

transport.call(SOAP_ACTION, soapEnvelope);

这被调用,并且几乎是瞬间从Web服务返回值。 但是到达下一行可能需要一分钟:

SoapObject result = (SoapObject) soapEnvelope.bodyIn;

Web服务返回数据和应用程序命中下一行(上图)之间发生了什么? 有没有办法减少这种延迟? 有什么简单的检查吗?

有没有办法减少这种延迟? 有什么简单的检查吗?

唯一的方法是衡量各个领域的时间差异。 对于SOAP Web服务调用,这些是要测量的时间。

客户端时间

客户端应用程序代码 - >请求处理程序 - >请求序列化 - >请求分派 - > HTTP传输 - >服务器端

服务器端时间

接收HTTP请求 - >反序列化 - >应用程序代码 - >响应处理程序 - >序列化 - >调度 - > HTTP传输

阻塞通常在应用程序代码,处理程序和网络中。 测量这些,你可以找到时间花在哪里。

  • 要测量应用程序代码和处理程序所花费的CPU时间,请使用分析器。 我推荐Jprofiler
  • 要测量网络时间,请ping目标服务器,并使用像Charles这样的Web调试代理。 它可以告诉您请求在网络上花费的时间。

只有在调试应用程序时才会发现延迟。 在没有附加调试器的情况下运行应用程序时,它会立即返回。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM