您好,我正在开发一个使用Magento作为后端的
Android应用程序,而我正在使用magento的SOAP webervice,我已将所有的产品,客户和客户地址信息添加到购物车中,但是当我尝试将运送方式添加到购物车我收到这个错误
SoapFault – faultcode:’1062’faultstring:’运送方式不可用’
SoapObject availableShippingMethods = new SoapObject(MAGENTO_NAMESPACE,"shoppingCartShippingList"); availableShippingMethods.addProperty("sessionId",sessionId); availableShippingMethods.addProperty("quoteId",quoteId); env.setOutputSoapObject(availableShippingMethods); androidHttpTransport.call("",env); Object resultForAvailableShippingMethods = env.getResponse(); Log.d("AvailableShippingMethods",resultForAvailableShippingMethods.toString());
这将给我们这个输出
D / AvailableShippingMethods:shoppingCartShippingMethodEntityArray {item = shoppingCartShippingMethodEntity {code = flatrate_error;载体= flatrate; carrier_title =统一费率;价= 0; }; }
SoapObject shippingmethod = new SoapObject(MAGENTO_NAMESPACE,"shoppingCartShippingMethod"); shippingmethod.addProperty("sessionId",sessionId); shippingmethod.addProperty("quoteId",quoteId); shippingmethod.addProperty("shippingMethod","flatrate_error");//Code for Flatrate shipping method and it is enabled in magento site env.setOutputSoapObject(shippingmethod); androidHttpTransport.call("",env); Log.d("shippingMethod",shippingmethod.toString()); Object resultforShippingMethod = env.getResponse(); Log.d("ShippingMethod",resultforShippingMethod.toString());
解决方法
我知道答案已经太迟了,但可能会帮助未来的人…
问题在于magento soap v2的文档…当我通过wsdl链接时,我注意到一些如下所示:
<message name="shoppingCartShippingMethodRequest"> <part name="sessionId" type="xsd:string"/> <part name="quoteId" type="xsd:int"/> <part name="method" type="xsd:string"/> <part name="storeId" type="xsd:string"/> </message>
你可以看到,有属性方法.其实我们必须添加运送方式…
所以你必须更改ur代码如下…
SoapObject shippingmethod = new SoapObject(MAGENTO_NAMESPACE,"shoppingCartShippingMethod"); shippingmethod.addProperty("sessionId",sessionId); shippingmethod.addProperty("quoteId",quoteId); shippingmethod.addProperty("method","flatrate_error"); env.setOutputSoapObject(shippingmethod); androidHttpTransport.call("",env); Log.d("shippingMethod",shippingmethod.toString()); Object resultforShippingMethod = env.getResponse(); Log.d("ShippingMethod",resultforShippingMethod.toString());