0

如何使用 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)

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

4

1 回答 1

0

尝试这个。

您只需创建一个简单的数组,然后将其作为参数简单地传递给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;

希望它对你有用。

于 2014-08-22T07:54:31.350 回答