2012-03-08 75 views
0

場景:的Android與WindowsMo​​bile的消費的WebService

  • 我開發Windows Mobile應用,而在2005年Vb.net
  • 我開發一個應用程序的AndroidEclipse

這兩個應用程序具有相同的邏輯。兩個應用程序都使用相同的Web服務。

服務器運行在Windows Server 2003,服務應用程序使用VB.net 2005進行部署。

測試:

  • 三星Galaxy S2與Android
  • 有人茅根設備與Windows Mobile

相同的web服務調用採用:

  • Android時間:3分44秒。
  • Windows Mobile時間:0分54秒。

時間使用的時鐘計算出的,並代表了時間的用戶。

差異:

  • Windows Mobile發送和接收數據表。
  • Windows Mobile通過Base64的序列發送的照片(5張30KB每個)
  • Android發送和接收JSON(數據表被轉換爲JSON
  • Android通過Base64的序列發送的照片(5張30KB每個)

爲什麼時間如此不同?

Android我消耗使用下面的代碼的Web服務:

公共類Func_WebService {

private static int Ksoap_timeout = 40000; 
private static String NAMESPACE = "http://tempuri.org/"; 
private static String URL="http://XXX.137.xxx.79/Sincro_test_android/Service1.asmx"; 

private static SoapObject request=null; 
private static SoapSerializationEnvelope envelope=null; 
private static SoapPrimitive resultsRequestSOAP=null; 

public static String PRIMERLOGGIN(String Usuario,String Contrasena,String Emei){ 

    final String METHOD_NAME = "PRIMERLOGGIN"; 
    final String SOAP_ACTION ="http://tempuri.org/PRIMERLOGGIN"; 

    request = new SoapObject(NAMESPACE, METHOD_NAME); 
    request.addProperty("user", Variables.Usuario); 
    request.addProperty("pass", Variables.Contrasena); 
    request.addProperty("X", Variables.Emei); 

    envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
    envelope.dotNet = true; //se asigna true para el caso de que el WS sea de dotNet 
    envelope.setOutputSoapObject(request); 

    HttpTransportSE transporte = new HttpTransportSE(URL); 

    try {  
     transporte.call(SOAP_ACTION, envelope); 
     resultsRequestSOAP = (SoapPrimitive)envelope.getResponse(); 
     return resultsRequestSOAP.toString() ; 
    } 
    catch (Exception e) { 
     return Estados_Sincro.Error_coneccion; 
    } 

} 

回答

0

從片斷您使用kso​​ap2 - 安卓的代碼來看。這個庫用於SOAP web服務。然而,你正在談論使用JSON的Android ..因此,這將無法正常工作。你必須要麼改變服務器使用SOAP和繼續使用kso​​ap2,Android或更改到Android應用程序與其他一些庫來解析JSON ..

+0

它的工作原理。我很明顯地調整了json的web服務方法。但是,服務方法具有相同的邏輯。 – AAP 2012-03-08 18:19:39

0

爲何使用數據表?我假設你正在使用Json序列化數據集? 所以你得到了很多額外的數據。反序列化是一個耗時的過程。

我看到你正在使用的登錄方法。我已經爲j2me和windows mobile實施了一些登錄選項。但我總是喜歡自定義對象,並且響應時間相同。

+0

@R Quijano代碼片段只是一個例子。 json數據表例如:[{「ID_INSPEC」:255843,「MARCA」:「CHEVROLET」,「MODELO」:「CORSA GL 1.6 3 P」,「ANIO」:1234,「CHASIS」:「M」, 「MOTOR」: 「M」, 「COLOR」:2 「KILOMETROS」: 「1111」, 「VERIFICO」: 「N」, 「ASIENTOS」: 「5」, 「VTV_NUM」: 「11111111」, 「VTV_VTO」: 「05/2009」,「Odom_5」:「N」,「TIPOVEHICULO」:16,「PATENTE」:「EOS180」,「COMBUSTIBLE」:1}]這就是全部。我有5個這樣的方法。 – AAP 2012-03-09 21:09:46