Dzwonię do usługi internetowej z mojej aplikacji na Androida. Mam wiele różnych połączeń do tej usługi przez całą aplikację, a każdy z nich zwraca dane w czasie krótszym niż sekunda, z wyjątkiem jednego. Jedno z moich zgłoszeń może potrwać nawet minutę, aby zwrócić te dane, mimo że faktyczne połączenie z serwisem jest bliskie natychmiastowe. Problem występuje z linią:Metoda HttpTransportSe.call() trwająca minutę połączenia z serwisem WWW
transport.call(SOAP_ACTION, soapEnvelope);
To się nazywa i wartość jest zwracana z serwisu internetowego niemal natychmiast. Ale może to potrwać nawet minutę, aby osiągnąć następny wiersz:
SoapObject result = (SoapObject) soapEnvelope.bodyIn;
co dzieje się między usługą internetową zwracania danych i aplikacji uderzanie następną linię (powyżej)? Czy istnieje sposób na zmniejszenie tego opóźnienia? Czy jest coś łatwego do sprawdzenia?
czy jesteś pewien, że rezultat jest tak szybki? możliwe jest, że serwer utrzymuje połączenie otwarte z jakiegoś powodu. – njzk2
Tak, kiedy idę do witryny usługi sieciowej w przeglądarce internetowej, natychmiast zwraca wyniki. A kiedy zdalnie debuggujemy serwis internetowy, opóźnienie przychodzi od momentu, w którym funkcja zwraca ciąg znaków, aż do wiersza 'SoapObject result = (SoapObject) soapEnvelope.bodyIn;', więc nie ma opóźnień w usłudze internetowej. Wszystkie inne połączenia z serwisem internetowym używają tego samego kodu dla żądań, zmieniając tylko kilka zmiennych i są w porządku. – anothershrubery