1

我使用以下代码从 .Net Web 服务(asmx)获取响应。

try{
    SoapObject request = new SoapObject(NAMESPACE,METHOD_NAME);
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.dotNet =true;
    AndroidHttpTransport httpTransport = new AndroidHttpTransport(URL);
        envelope.setOutputSoapObject(request);
    httpTransport.debug=true;
        httpTransport.call(SOAP_ACTION, envelope);
    SoapObject result=(SoapObject)envelope.getResponse();
    String Text = result.getProperty(1).toString();
        System.out.println("Text : "  + Text);
    } 
catch (Exception e) {
    e.printStackTrace();
}

当我尝试这段代码时,我得到了以下输出。

anyType{NewDataSet=anyType{ResponseTable=anyType{Result=Success; }; }; }

在这里,我需要“结果=成功”。

请帮我。

4

2 回答 2

2

尝试 :

SoapObject result = (SoapObject)envelope.bodyIn;
String Result = result.getProperty(0).toString();
于 2013-10-15T12:18:26.277 回答
0

结果就像一个多维数组。您需要解析结果,直到获得最后一个元素:Result=Assigned;

第一次:(array有2个元素)

SoapObject result = (SoapObject)envelope.bodyIn;
SoapObject first = (SoapObject) result.getProperty(0);

你会得到你的评论:

anyType{schema=anyType{element=anyType{complexType=anyType{choice=anyType{elemen‌​t=anyType{complexType=anyType{sequence=anyType{element=anyType{}; }; }; }; }; }; }; }; diffgram=anyType{NewDataSet=anyType{ResponseTable=anyType{Result=Assigned; }; }; }; }

第二次:(array[1]

SoapObject second = (SoapObject) first.getProperty(1);

你得到了:

anyType{NewDataSet=anyType{ResponseTable=anyType{Result=Assigned;}; }; }

第三次:(array[1][0]

SoapObject third = (SoapObject) second.getProperty(0);

你得到了:

anyType{ResponseTable=anyType{Result=Assigned;};}

最后,第四次:(array[1][0][0]

SoapObject forth = (SoapObject) third.getProperty(0);

你会得到你想要的:

anyType{结果=已分配;}

现在使用以下来获取您的元素:(array[1][0][0][i]这次i=0

PropertyInfo pi = new PropertyInfo();
forth.getPropertyInfo(0, pi);
Log.d("MRNEO", pi.getName() + "=" + forth.getProperty(0).toString());

日志中的结果是:

结果=已分配

于 2015-10-05T09:02:41.120 回答