2014-09-19 25 views
0

我正在使用kso​​ap2 Android庫調用Magento api通過SOAP。登錄方法(獲取sessionId)工作正常,但Call方法不會接受額外的參數。調用方法有三個參數: 調用(sessionId,resourcePath,數組參數)。我想調用的resourcePath是customer.list,其他參數是過濾器(電子郵件)。 Api文檔是here在android中調用magento

Hashtable<String, String> hashtable = new Hashtable<String, String>(); 
hashtable.put("email", "myemail"); 

SoapObject request = new SoapObject("urn:Magento", "call"); 
request.addProperty("resourcePath", "customer.list"); 
request.addProperty("sessionId", sessionId); 
request.addProperty("args", hashtable); 

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
(new MarshalHashtable()).register(envelope); 
envelope.dotNet = false; 
envelope.xsd = SoapSerializationEnvelope.XSD; 
envelope.enc = SoapSerializationEnvelope.ENC; 
envelope.setOutputSoapObject(request); 

HttpTransportSE transport = new HttpTransportSE(URL); 
transport.debug = true; 
transport.call("", envelope); 

使用此代碼,我成功獲取客戶列表,但電子郵件過濾器不適用。 在此先感謝!

+0

嗨給出,我想請求你分享答案。我很煩,在磁振SOAP v1集成在android – vabhavsingh 2016-02-17 04:45:08

+0

嗨。我們從SOAP切換到XMLRPC,因此我無法幫助您......對不起! – File 2016-02-17 09:04:53

回答

0

嘿它的問題與過濾

$filters = array(array('email' => array('eq'=>'myemail')) 
); 

呼叫客戶名單就像

$result = $client->call($session, 'customer.list', $filters); 
+0

是的,我知道,但我需要Java。 Ksoap2的文檔很差。 – File 2014-09-19 15:57:30

+0

soory。爲了那個原因.. – 2014-09-19 15:58:15

1

更改和添加以下代碼下面

(new MarshalHashtable()).register(envelope); 
     Hashtable<String, String> hashtable = new Hashtable<String, String>(); 
     hashtable.put("email", "myemail"); 
Vector<Hashtable<String, String>>aar2=new Vector<Hashtable<String, String>>(); 
     aar2.add(hashtable); 
     parameter.addProperty("args", aar2);