使用JAVA中的ksoap库,通过筛选器从magento检索特定的客户列表集

使用JAVA中的ksoap库,通过筛选器从magento检索特定的客户列表集,java,magento,ksoap,Java,Magento,Ksoap,我正在使用SOAP API从magento服务器获取数据。 我想获取客户列表,我想通过过滤器来检索特定的客户列表。我正在使用hashMap,但它引发了一个序列化异常 我的代码是 {request = new SoapObject(NAMESPACE, "customerCustomerInfo"); request.addProperty("sessionId", sessionId); HashMap<String, Object>

我正在使用SOAP API从magento服务器获取数据。
我想获取客户列表,我想通过过滤器来检索特定的客户列表。我正在使用hashMap,但它引发了一个序列化异常

我的代码是

{request = new SoapObject(NAMESPACE, "customerCustomerInfo");
            request.addProperty("sessionId", sessionId);
            HashMap<String, Object> filter=new HashMap<String, Object>();
            filter.put("customer_id", condition);
            request.addProperty("filters", filter);}
{request=newsoapobject(名称空间,“customerCustomerInfo”);
request.addProperty(“sessionId”,sessionId);
HashMap筛选器=新建HashMap();
filter.put(“客户id”,条件);
request.addProperty(“过滤器”,过滤器);}
我还使用了jsonobject,simple Arraylist,但它引发了相同的异常。

您可以尝试将“HashMap”更改为“HashTable”,并将“MarshallHashTable”注册到信封中

比如:

SoapSerializationEnvelope env=新的SoapSerializationEnvelope(SoapEnvelope.VER11);
androidHttpTransport=新的HttpTransportSE(URL);
androidHttpTransport.debug=true;
(新的marshallhashtable()).register(env);
//滤器
Hashtable filter=新的Hashtable();
filter.put(“客户id”、“1”);
request.addProperty(“过滤器”,过滤器);
我从你那里得到这个建议

“使用参数数组创建请求”位于


@Ricardo的答案是正确的,它帮助了我,但我为那些仍然困惑的人发布了完整的代码。下面的代码将为我获取特定客户的订单

SoapSerializationEnvelope env = new SoapSerializationEnvelope(SoapEnvelope.VER11);   
env.dotNet = false;                                                                  
env.xsd = SoapSerializationEnvelope.XSD;                                             
env.enc = SoapSerializationEnvelope.ENC;                                             
Hashtable hashtable = new Hashtable();                                               
hashtable.put("customer_id", 17);                                                    

SoapObject request = new SoapObject(NAMESPACE, "salesOrderList");                               
request.addProperty("filters", hashtable);                                           
request.addProperty("sessionId", sessionId);                 

env.setOutputSoapObject(request);                                                    

HTttpTransportSE transportSE = new HttpTransportSE(URL);                                              
transportSE.debug=true;                                                              
(new MarshalHashtable()).register(env);     

你好,里卡多,谢谢你的回复。事实上,我在谷歌上搜索了很多,终于找到了u提供的参数数组链接。它帮助我成功发送请求。:)
SoapSerializationEnvelope env = new SoapSerializationEnvelope(SoapEnvelope.VER11);   
env.dotNet = false;                                                                  
env.xsd = SoapSerializationEnvelope.XSD;                                             
env.enc = SoapSerializationEnvelope.ENC;                                             
Hashtable hashtable = new Hashtable();                                               
hashtable.put("customer_id", 17);                                                    

SoapObject request = new SoapObject(NAMESPACE, "salesOrderList");                               
request.addProperty("filters", hashtable);                                           
request.addProperty("sessionId", sessionId);                 

env.setOutputSoapObject(request);                                                    

HTttpTransportSE transportSE = new HttpTransportSE(URL);                                              
transportSE.debug=true;                                                              
(new MarshalHashtable()).register(env);