【问题标题】:Axis: createCall with params轴:带参数的 createCall
【发布时间】: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个参数: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}});    

我检查了数据库,产品确实存在。无论使用哪个 id,我都会出错:

AxisFault
 faultCode: 101
 faultString: Product not exists.

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

如何正确传递参数?

我做了什么:

【问题讨论】:

    标签: java magento soap wsdl axis


    【解决方案1】:

    Magento 文档有错误:

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

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

    【讨论】:

    • 感谢您的回复,但无论如何找不到产品(同样的错误)我尝试了不同的 ID 和 SKU,但它不起作用。很多人写到 Magento SOAP 有很多缺陷。
    • 是的,我以前自己也用过。我不再使用它是有原因的^^
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    • 2021-02-25
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    • 2023-04-03
    相关资源
    最近更新 更多