我已经构建了一个调用Web服务的应用程序,以检索某些信息。此应用程序旨在在android和Windows(使用firemonkey框架)上均可工作。调用Web服务的对象已使用WSDL导入器构建,并且在Windows上运行应用程序时效果很好。
尽管如此,当我尝试在Android设备上使用我的应用程序时,我只能调用两次Web服务。第三次,应用程序冻结。
我已经尝试进行一些调试,并且似乎在尝试调用Web服务时应用程序冻结了:
genEtq := GetIGenerationEtiquettes(); // Converts a THttpRio as a IGenerationEtiquette object
soapattachmnt := genEtq.GetImageEtiquette(idEtiquette); // Calls web service -> freeze on third time
//
// Do something ...
//
该Web服务托管在我的计算机上,因此我确定服务方面没有任何问题。另外,当我重新启动应用程序时,我仍然可以两次调用Web服务。
我的应用有权访问我的android设备上的互联网,因此我对出现问题的想法不多了。我也尝试过监视网络(通过wireshark),并且我能够看到两个第一个请求,但是看不到第三个请求。
您对如何找到问题有任何想法吗?
最后我找到了答案,我的错误是每次GetIGenerationEtiquettes()函数都调用而不是存储结果对象。
现在,我可以根据需要多次调用我的Web服务。
希望此答案对您有所帮助。