Axis:createCall with params

Evg*_*dev 5 java axis soap wsdl magento

我使用基于Magento WSDL(http:// host/api?wsdl)的wsdl2java生成了java代码,但无法使用params调用任何过程

环境:

  • JDK 1.8
  • AXIS 1.4
  • PHP 5.6
  • Magento 1.6

问题:

例如,product.info api方法需要2个参数:sessionIdproductId

码:

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}});    
Run Code Online (Sandbox Code Playgroud)

我查了数据库,产品确实存在.无论使用哪个ID,我都会收到错误:

AxisFault
 faultCode: 101
 faultString: Product not exists.
Run Code Online (Sandbox Code Playgroud)

我尝试另一种api方法,如customer.info,并得到相同的结果.

如何正确传递参数?

我做了什么:

The*_*rox 3

Magento 文档有一个错误:

http://www.magentocommerce.com/api/soap/catalog/catalogProduct/catalog_product.info.html

参数“productId”应替换为“product”。