2016-03-07 29 views
5

ho generato il codice Java con wsdl2java sulla base di Magento WSDL (http://host/api?wsdl), ma non si può chiamare qualsiasi procedura con paramsAxis: createCall con params

Ambiente:

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

Problema:

Per esempio, product.info metodo API richieste 2 params: sessionId e productId codice

:

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}});  

ho controllato banca dati, prodotto esiste davvero. non importa quale id utilizzato, l'errore che ottengo:

AxisFault 
faultCode: 101 
faultString: Product not exists. 

provo un altro metodi API, come un customer.info e avere lo stesso risultato.

come passare correttamente i parametri?

quello che ho fatto:

risposta

3

La documentazione Magento è difettoso: http://www.magentocommerce.com/api/soap/catalog/catalogProduct/catalog_product.info.html

Il parametro "productId" è in realtà chiamato "prodotto".

+0

Grazie per la risposta, ma comunque prodotto non trovato (stesso errore) ho provato ID e SKU diversi, ma non funziona. Molte persone scrivono che Magento SOAP è molto buggato. –

+1

Sì, l'ho usato di nuovo in quei giorni. C'è un motivo per cui non lo uso più ^^ – TheMirrox