【问题标题】:Filtration for navision web services in android过滤android中的navision网络服务
【发布时间】:2014-02-15 00:50:22
【问题描述】:

如何在从android设备调用的navision网络服务中传递过滤器以及如何获取数据? 我已经使用带有 NTML 身份验证的 WSDL 和 ksoap2 调用了 Web 服务,并成功获取了数据,但过滤器在应用时不起作用。

【问题讨论】:

  • 描述了here with xml samplehere
  • 我之前浏览过这些链接,问题出在 Vector Object 和 soapObject 之间。无论如何,我解决了这个问题。谢谢。
  • 那你为什么不发布解决方案呢?

标签: android android-ksoap2 wsdl2java dynamics-nav


【解决方案1】:

将此添加到调用方法的位置

        VectorApp_Setup_Filter vfilter = new VectorApp_Setup_Filter();

        App_Setup_Filter appsetupFilter1 = new App_Setup_Filter();
        appsetupFilter1.field = App_Setup_Fields.Salesperson_Code;
        Log.e("SALES CODE PASSING IN FILTER ", editStrOfflineUserId);
        appsetupFilter1.criteria = editStrOfflineUserId;

        App_Setup_Filter appsetupFilter2 = new App_Setup_Filter();
        appsetupFilter2.field = App_Setup_Fields.Status;
        appsetupFilter2.criteria = "Intrasit";

        vfilter.add(appsetupFilter2);
        vfilter.add(appsetupFilter1);

        appsetup.ReadMultipleAsync(vfilter, null, 0);

READMULTIPLE 异步方法

SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(
            SoapEnvelope.VER11);
    soapEnvelope.implicitTypes = true;
    soapEnvelope.dotNet = true;
    SoapObject soapReq = new SoapObject(
            "urn:microsoft-dynamics-schemas/page/app_setup", "ReadMultiple");

    for (int i = 0; i < filter.size(); i++) {

        soapReq.addProperty("filter", getSOAPVectorAppsetup(filter, i));

    }

    soapReq.addProperty("bookmarkKey", bookmarkKey);
    soapReq.addProperty("setSize", setSize);
    soapEnvelope.setOutputSoapObject(soapReq);

方法详情:- getSOAPVectorAppsetup();

private SoapObject getSOAPVectorAppsetup(VectorApp_Setup_Filter filter,
        int position) {
    SoapObject appsetup = new SoapObject(
            "urn:microsoft-dynamics-schemas/page/app_setup", "anyType");

    // for (int i = 0; i < filter.size(); i++) {

    Log.e("Field", 0 + "" + filter.get(position).getProperty(0));
    Log.e("Criteria", 0 + " " + filter.get(position).getProperty(1));

    appsetup.addPropertyIfValue("Field", filter.get(position)
            .getProperty(0));
    appsetup.addPropertyIfValue("Criteria", filter.get(position)
            .getProperty(1));

    // }

    return appsetup;

}

这个解决方案对我有用。

【讨论】:

    猜你喜欢
    • 2019-01-08
    • 2019-10-03
    • 2017-01-01
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多