java – Axis:带有参数的createCall

前端之家收集整理的这篇文章主要介绍了java – Axis:带有参数的createCall前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我使用基于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个参数: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",ParameterMode.IN);
serviceCall.addParameter("productId",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并且具有相同的结果.

如何正确传递参数?

我做了什么:

> disable wsdl cache on server side
> clean wsdl cache
>重新启动Web服务

最佳答案
Magento文档有一个错误

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

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

猜你在找的Java相关文章