加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Axis:带有参数的createCall

发布时间:2020-12-15 01:05:23 所属栏目:Java 来源:网络整理
导读:我使用基于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 magentoSer

我使用基于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”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读