2014-01-24 19 views
0

如何在Android设备中调用Navision Web服务中的过滤器以及如何获取数据? 我已经使用WSDL & ksoap2调用了带有NTML认证的Web服务,并成功获取数据,但过滤器在应用时不起作用。在android中用于navision web服务的过滤

+0

描述[这里用xml示例](http://stackoverflow.com/questions/16542364/date-filter-in-microsoft-dynamics-nav-webservice)和[这里](http://stackoverflow.com/问题/ 3423017 /动态 - 导航 - Navision的Web网页,readmultiple最新的过滤器)。 –

+0

我以前经历过这些链接,问题出在Vector Object和soapObject之间。无论如何,我解决了这个问题。谢谢。 – OAEI

+0

为什么不发布解决方案呢? –

回答

0

添加此TO THE其中方法被调用

 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; 

} 

该解决方案适用于ME。