【发布时间】:2016-06-20 18:12:17
【问题描述】:
我使用基于 Magento WSDL (http://host/api?wsdl) 的 wsdl2java 生成了 java 代码,但无法使用参数调用任何过程
环境:
- JDK 1.8
- 轴 1.4
- php 5.6
- Magento 1.6
问题:
例如product.infoapi方法需要2个参数:sessionId和productId
代码:
MagentoService magentoService = new MagentoServiceLocator();
Mage_Api_Model_Server_HandlerBindingStub service = new Mage_Api_Model_Server_HandlerBindingStub(new URL("http://myhost/api"), magentoService);
String sessionId = service.login("api-user", "AAAAAAAAAAAAAAAA");
Call serviceCall = service.createCall();
serviceCall.setOperationName(new QName("call"));
serviceCall.setTargetEndpointAddress(new URL("http://myhost/api"));
serviceCall.addParameter("sessionId", Constants.XSD_STRING, ParameterMode.IN);
serviceCall.addParameter("resourcePath", Constants.XSD_STRING, ParameterMode.IN);
serviceCall.addParameter("productId", Constants.XSD_STRING, ParameterMode.IN);
serviceCall.setReturnType(Constants.SOAP_MAP);
serviceCall.invoke("call", new Object[] {sessionId, "product.info", new Object[]{2115}});
我检查了数据库,产品确实存在。无论使用哪个 id,我都会出错:
AxisFault
faultCode: 101
faultString: Product not exists.
我尝试了另一种 api 方法,例如 customer.info 并得到相同的结果。
如何正确传递参数?
我做了什么:
【问题讨论】:
标签: java magento soap wsdl axis