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:
- disable wsdl cache on server side
- clean wsdl cache
- servizi riavvio web
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. –
Sì, l'ho usato di nuovo in quei giorni. C'è un motivo per cui non lo uso più ^^ – TheMirrox