2013-03-22 1 views
5

Android 애플리케이션에서 웹 서비스를 호출하고 있습니다. 응용 프로그램을 통해이 서비스에 대한 호출이 많이 있고 그 중 하나가 1 초 미만의 시간 내에 데이터를 반환합니다. 실제 웹 서비스 호출이 거의 동시에 발생하더라도 내 통화 중 하나가 데이터를 반환하는 데 최대 1 분이 걸릴 수 있습니다. 이 문제는 다음 줄에서 발생합니다.웹 서비스 호출을 위해 HttpTransportSe.call() 메서드가 1 분 정도 걸립니다.

transport.call(SOAP_ACTION, soapEnvelope); 

이 호출은 값을 웹 서비스에서 거의 즉각적으로 반환합니다.

SoapObject result = (SoapObject) soapEnvelope.bodyIn; 

데이터를 반환하는 웹 서비스 및 다음 줄 (위) 타격 응용 프로그램 사이에 무슨 일이 일어나고 무엇 :하지만 다음 줄에 도달하는 분까지 걸릴 수 있습니다? 이 지연을 줄이는 방법이 있습니까? 확인할 것이 간단한가요?

+0

결과가 빠릅니다. 서버가 어떤 이유로 든 연결을 유지할 수 있습니다. – njzk2

+0

예, 웹 브라우저에서 웹 서비스 위치로 이동하면 결과가 즉시 반환됩니다. 그리고 웹 서비스를 원격 디버깅 할 때 fecntion이 문자열을 반환 할 때부터 'SoapObject result = (SoapObject) soapEnvelope.bodyIn;'줄까지 반환되므로 웹 서비스에 지연이 없습니다. 그리고 웹 서비스에 대한 다른 모든 호출은 요청에 대해 똑같은 코드를 사용합니다. 단지 두 개의 변수 만 변경하면됩니다. – anothershrubery

답변

1

지연은 앱 디버깅 중일뿐입니다. 디버거를 연결하지 않고 앱을 실행하면 즉각적으로 반환됩니다.

1

지연을 줄일 수있는 방법이 있습니까? 확인할 것이 간단한가요?

유일한 방법은 다양한 영역에서 시간의 차이를 측정하는 것입니다. SOAP 웹 서비스 호출의 경우 측정 할 시간입니다.

클라이언트 측 시간

클라이언트 응용 프로그램 코드 -> 요청 처리기 -> 요청 직렬화 -> 요청 파견 -> HTTP 운송 -> 서버 측

가 수신 서버 측 시간 HTTP 요청 -> 비 직렬화 -> 응용 프로그램 코드 -> 응답 처리기 -> 직렬화 -> 발송 -> HTTP 전송

차단 일반적으로 응용 프로그램 코드, 처리기 및 네트워크에 있습니다. 그것들을 측정하면 시간이 소비 된 곳을 찾을 수 있습니다.

  • 응용 프로그램 코드 및 처리기에서 사용하는 CPU 시간을 측정하려면 프로파일 러를 사용하십시오. Jprofiler을 권하고 싶습니다.
  • 네트워크 시간을 측정하려면 대상 서버를 ping하고 Charles과 같은 웹 디버깅 프록시를 사용하십시오. 네트워크에서 요청한 시간을 알려줍니다.
+0

필자는 지연이 어디인지 알고 있으며, 특히'HttpTransportSE.call()'메소드의 ksoap2 타사 라이브러리에 있습니다. 이 지연을 해결하거나 지연을 유발할 수있는 코드 조각이 무엇이 발생하는지 확인하는 방법을 찾고 있습니다. – anothershrubery

관련 문제