【问题标题】:How to send filter parameters to navision web service from android using ksoap2?如何使用 ksoap2 从 android 向 navision Web 服务发送过滤器参数?
【发布时间】:2014-08-22 07:13:36
【问题描述】:

如何使用 ksoap2 从 android 传递 navision Web 服务的过滤器?我正在获取所有数据,但通过的过滤器不起作用。什么是通过过滤器的正确方法?

我试过了

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE, OPERATION_NAME);

    envelope.dotNet = true;
    request.addProperty("City_Code","2");

我想获取 City_Code 为 2 的城镇,但上面的代码返回所有城镇。

我也试过

    HashMap<String, String> filter = new HashMap<String, String>();

    filter.put("Field", "City_Code");
    filter.put("Criteria", "2");
    request.addProperty("Town_List_Filter",filter);

    envelope.setOutputSoapObject(request)

使用此代码,我没有得到任何响应。

【问题讨论】:

    标签: android ksoap2 navision


    【解决方案1】:

    试试这个。

    您只需创建一个简单的 keyvalue 数组,然后将其作为参数简单地传递给 request.addproperty 方法。

             try {
    
                SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                        SoapEnvelope.VER11);
                envelope.implicitTypes = true;
                envelope.setAddAdornments(false);
                envelope.dotNet = true;
                envelope.encodingStyle = SoapSerializationEnvelope.XSD;
                SoapObject request = new SoapObject("", METHOD_NAME);    //Your method name 
    
                for (int i = 0; i < key.length; i++) {
                    request.addProperty(key[i], value[i]);       //your key and values as an array
                }
    
                envelope.setOutputSoapObject(request);
    
                HttpTransportSE ht = new HttpTransportSE(URL);      //Your URL
                ht.debug = true;
                ht.call(SOAP_ACTION, envelope);       //Your Soap_Action 
                s = ht.responseDump;
    
                Log.d(TAG, "HTTP REQUEST:\n" + ht.requestDump);
                Log.d(TAG, "HTTP RESPONSE:\n" + s);
    
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            return s;
    

    希望它对你有用。

    【讨论】:

    • 在我的第一次试用中,我通过了键值,但没有工作。它用于 Microsoft Dynamics Nav 服务器和 NTLM 身份验证。
    • 我没有收到任何错误,我只是无法过滤数据。我想获取城市代码为“X”的所有城镇,但我得到的是所有城市代码不是“X”的城镇。
    • 我认为您的带有键值对的参数与您的 URL 不正确。所以更好的方法来检查您的 URL 参数是否正确传递。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多