Как разобрать ответ KSOAP2 в Android? - PullRequest
1 голос
/ 29 марта 2012

Я вызвал веб-сервис, используя KSoap2 в Android, но я получил следующий ответ.Как проанализировать этот ответ ksoap в Android?

ResolveNamesResponse {ResponseMessages = anyType {ResolveNamesResponseMessage = anyType {MessageText = Было найдено несколько результатов .;ResponseCode = ErrorNameResolutionMultipleResults;DescriptiveLinkKey = 0;ResolutionSet = anyType {Resolution = anyType {Mailbox = anyType {Name = Amyj;EmailAddress=Amyj@testsa.onmicrosoft.com;RoutingType = SMTP;MailboxType = почтовый ящик;};Contact = anyType {DisplayName = Эми Джон;GivenName = Эй;EmailAddresses = {anyType запись = SIP: Amyj@test.onmicrosoft.com;Вход = SMTP: Amyj@testsa.onmicrosoft.com;};PhysicalAddresses = anyType {запись = anyType {CountryOrRegion = Китай;};};ContactSource = ActiveDirectory;Фамилия = Джон;};};Разрешение = anyType {Mailbox = anyType {Name = Amyraj;EmailAddress=Amyraj@testsa.onmicrosoft.com;RoutingType = SMTP;MailboxType = почтовый ящик;};Contact = anyType {DisplayName = Amy Raj;GivenName = Эй;EmailAddresses = {anyType запись = SIP: Amyraj@testsa.onmicrosoft.com;Вход = SMTP: Amyraj@testsa.onmicrosoft.com;};PhysicalAddresses = anyType {запись = anyType {CountryOrRegion = Индия;};};ContactSource = ActiveDirectory;Фамилия = Радж;};};Разрешение = anyType {Mailbox = anyType {Name = блеск;EmailAddress=shine@testsa.onmicrosoft.com;RoutingType = SMTP;MailboxType = почтовый ящик;};Contact = anyType {DisplayName = Shine Joseph;GivenName = обувь;EmailAddresses = {anyType запись = SIP: shine@testsa.onmicrosoft.com;Вход = SMTP: shine@testsa.onmicrosoft.com;};PhysicalAddresses = anyType {запись = anyType {CountryOrRegion = Индия;};};ContactSource = ActiveDirectory;Фамилия = Иосиф;};};};};};}

Ответы [ 2 ]

1 голос
/ 28 августа 2014

Попробуйте это, я думаю, это будет работать

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

int cols = response.getPropertyCount();

for (int i = 0; i < cols; i++) {

    Object objectResponse = (Object) response.getProperty(i);
    SoapObject r =(SoapObject) objectResponse;

    String   key1=(String) r.getProperty("key1").toString();

    // Get the rest of your Properties by 
    // (String) r.getProperty("PropertyName").toString();            
}
0 голосов
/ 29 марта 2012

На самом деле это известный формат, если вы знаете Java Script.Эти данные в этом формате являются действительными JSON Object's and JSON Array's. Вот как можно проанализировать этот результат.

Например:

private Bundle bundleResult=new Bundle();
private JSONObject JSONObj;
private JSONArray JSONArr;
Private SoapObject resultSOAP = (SoapObject) envelope.getResponse();
/* gets our result in JSON String */
private String ResultObject = resultSOAP.getProperty(0).toString();

if (ResultObject.startsWith("{")) { // if JSON string is an object
    JSONObj = new JSONObject(ResultObject);
    Iterator<String> itr = JSONObj.keys();
    while (itr.hasNext()) {
        String Key = (String) itr.next();
        String Value = JSONObj.getString(Key);
        bundleResult.putString(Key, Value);
        // System.out.println(bundleResult.getString(Key));
    }
} else if (ResultObject.startsWith("[")) { // if JSON string is an array
    JSONArr = new JSONArray(ResultObject);
    System.out.println("length" + JSONArr.length());
    for (int i = 0; i < JSONArr.length(); i++) {
        JSONObj = (JSONObject) JSONArr.get(i);
        bundleResult.putString(String.valueOf(i), JSONObj.toString());
        // System.out.println(bundleResult.getString(i));
    } 
}

Надеюсь, это поможет вам решитьтвоя проблема.

...