2013-08-23 3 views
1

Это мой асинхронный кодKsoap2 возвращает anytype {} вместо нулевой

@Override 
protected SoapObject doInBackground(String... params) { 
try { 
    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
    request.addProperty("ID", "0014"); 
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
        SoapEnvelope.VER11); 
    envelope.setOutputSoapObject(request); 
    envelope.implicitTypes = false; 
    envelope.dotNet = true; 
    HttpTransportSE transport = new HttpTransportSE(URL); 

try { 
    transport.call(SOAP_ACTION, envelope); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
try { 
    SoapFault fault = (SoapFault) envelope.bodyIn; 
    System.out.println("fault in getdata : " + fault); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
try { 
    result = (SoapObject) envelope.bodyIn; 
    System.out.println("result in getdata : " + result); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
    } catch (Exception e) { 
     // System.out.println("Exception : " + e.toString()); 
    } 
    return result; 
    } 

И мой ответ

result in getdata : Getesponse{GetResult=anyType{schema=anyType{element=anyType{complexType=anyType{choice=anyType 
{element=anyType{complexType=anyType{sequence=anyType{element=anyType{}; element=anyType{}; element=anyType{}; 
element=anyType{}; element=anyType{}; element=anyType{}; element=anyType{}; }; }; }; }; }; }; }; 
diffgram=anyType{DocumentElement=anyType{Table1=anyType{Name=Sathish1; Subject=anyType{}; ID=0014; }; }; }; }; } 

Здесь я хочу предмет, как null вместо anyType{}. Есть ли какая-нибудь лучшая идея, кроме проверки с помощью объявлений if?

ответ

10

Когда вы позже проанализируете результат, используйте getPrimitiveProperty вместо getProperty. Это по сути то же самое, но исправляет такую ​​ошибку.

0

Чтобы получить ответ вы лучше использовать:

SoapObject result = (SoapObject) envelope.getResponse(); 

так или иначе, но вам нужно включить отладку заранее:

androidHttpsTransport.debug = true; 

вот как сделать звонок и получить ответ:

private String makeCall(SoapSerializationEnvelope envelope) { 
    HttpsTransportSE mHttpsTransport = getAndroidHttpsTransport(); 

    try { 
     mHttpsTransport.call(SOAP_ACTION, envelope); 
    } catch (IOException e) { 
     Logger.logError(TAG, e); 
    } catch (XmlPullParserException e) { 
     Logger.logError(TAG, e); 
    } finally { 
     Logger.logDebug(TAG, "Request dump is "); 
    } 

    return mHttpsTransport.responseDump; 
} 
+0

это возвращает 'XmlPullParserException' друг – Gunaseelan

+0

Покажите мне URL-адрес, который вы используете, чтобы начать свой« транспорт ». – Eugene

1

Код строки = soapObject.getProperty ("Код"). ToString(). Replace ("anyType {}", "");

+0

Просьба также предоставить объяснение – UrsinusTheStrong

Смежные вопросы