KSoap2没有返回有效的xml?

时间:2015-02-19 11:48:12

标签: android xml soap android-ksoap2

我正在尝试从Web服务获取xml数据。 xml数据就像这样

<Result>
<ErrorCode>0</ErrorCode>
<ErrorMessage>Login was succesful.</ErrorMessage>
<AuthCode>maneen90234</AuthCode>
</Result>

但我从KSoap 2获得的是以下字符串

anyType{Result=anyType{ErrorCode=1; ErrorMessage=Incorrect Username or Password; };

这就是我调用Web服务的方式

private String callAPI(String user, String password) {
        request = new SoapObject(NAME_SPACE, "UserLogin");
        PropertyInfo pi = new PropertyInfo();
        addProperty(pi, request, "UserId", user, String.class);
        addProperty(pi, request, "Password", password, String.class);
        envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.dotNet = true;

        envelope.setOutputSoapObject(request);

        androidHttpTransport = new HttpTransportSE(url);

        try {
            androidHttpTransport.call(SOAP_ACTION, envelope);
            response = envelope.getResponse().toString();
        } catch (Exception exception) {
            response = exception.toString();

        }
        return response;
    }

    private void addProperty(PropertyInfo pi, SoapObject request, String UserId, String value, Object type) {
        pi = new PropertyInfo();
        pi.setName(UserId);
        pi.setValue(value);
        pi.setType(type);
        request.addProperty(pi);
    }

我在SO上尝试了各种答案,但无济于事。知道我在这里做错了什么吗?

1 个答案:

答案 0 :(得分:1)

看起来ksoap2正在解析数据本身并返回数据的属性。我正在提取数据如下 -

SoapObject response = (SoapObject) ((SoapObject)envelope.getResponse()).getProperty(0);
 if(response.getProperty("ErrorCode").equals(1))
        {
            Toast.makeText(context,"Login sucessful",Toast.LENGTH_LONG).show();
            Log.d(TAG, String.valueOf(response));
        }
        else {
            Toast.makeText(context,"ErrorCode",Toast.LENGTH_LONG).show();
            Log.d(TAG, String.valueOf(response));
        }

虽然我仍然遇到传递参数的问题,但我会发布相同的问题。