我从Android应用程序调用Web服务。我通过应用程序对此服务进行了许多不同的调用,并且每个调用都在不到一秒的时间内返回数据,除了一个。即使实际的Web服务调用接近即时,我的一个呼叫也可能需要一分钟才能返回数据。该行出现问题:
transport.call(SOAP_ACTION, soapEnvelope);
调用它并且几乎立即从Web服务返回值。但是到达下一行可能需要一分钟时间:
SoapObject result = (SoapObject) soapEnvelope.bodyIn;
Web服务返回数据和应用程序命中下一行(上图)之间发生了什么?有没有办法减少这种延迟?有什么简单的检查吗?
答案 0 :(得分:1)
有没有办法减少这种延迟?有什么简单的检查吗?
要知道的唯一方法是衡量各个领域的时间差异。对于SOAP Web服务调用,这些是需要测量的时间。
客户端应用程序代码 - >请求处理程序 - > 请求序列化 - > 请求发送 - > HTTP传输 - >服务器端
接收HTTP请求 - >反序列化 - >应用代码 - >响应处理程序 - >序列化 - >发货 - > HTTP传输
阻塞通常在应用程序代码,处理程序和网络中。测量这些,你可以找到花费的时间。
答案 1 :(得分:1)
只有在调试应用程序时才会发现延迟。在没有附加调试器的情况下运行应用程序时,它会立即返回。