【问题标题】:KSOAP2 and WSDL Returning Unmarshalling Error: unexpected elementKSOAP2 和 WSDL 返回解组错误:意外元素
【发布时间】:2015-11-14 07:41:10
【问题描述】:

我正在尝试了解如何在 Android 中使用 a SOAP webservice (link to wsdl)。我有这个简单的方法,使用带有依赖项 jar 的 ksoap2 3.0:

public void simpleSoap() {
        String SOAP_ACTION = "";
        String METHOD_NAME = "getElement";
        String NAMESPACE = "http://www.wcc.nrcs.usda.gov/ns/awdbWebService";
        String URL = "http://www.wcc.nrcs.usda.gov/awdbWebService/services?WSDL";

        try {
            SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME);

            Request.addProperty("elementCd","WTEQ");

            SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            soapEnvelope.dotNet = true;
            soapEnvelope.setOutputSoapObject(Request);

            HttpTransportSE transport = new HttpTransportSE(URL);

            transport.call(SOAP_ACTION, soapEnvelope);
            resultString = (SoapPrimitive) soapEnvelope.getResponse();

            Log.i(TAG, "Result: " + resultString);
        } catch (Exception ex) {
            Log.e(TAG, "Error: " + ex.getMessage());
        }
    }

每次响应时我都会收到错误/强制关闭:

Error: Unmarshalling Error: unexpected element
(uri:"http://www.wcc.nrcs.usda.gov/ns/awdbWebService",
local:"elementCd"). Expected elements are <{}elementCd>

我已经在wonderful online client 上对此进行了测试,并且确实得到了结果。我在这里想念什么?为什么我无法获得我硬编码到 addProperty 函数中的这个简单 elementCd WTEQ 的结果?

【问题讨论】:

    标签: android web-services soap ksoap2 android-ksoap2


    【解决方案1】:

    三周后我偶然发现了这个问题:https://stackoverrun.com/es/q/2805758

    这是因为预期的命名空间必须是空字符串。因此,在将您的属性添加到请求时,请确保将 "" 放入命名空间。

    您可能还想在创建请求之前添加线程策略。

        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
    
        SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME);
        Request.addProperty("", "elementCd","WTEQ");
    

    【讨论】:

    • 哇!很高兴看到这对人们来说即将到来:) 我已经继续前进了......但感谢您在这里提供答案。
    猜你喜欢
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 2012-06-27
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    相关资源
    最近更新 更多