I wygenerowany kod java z wsdl2java oparciu o Magento WSDL (http://host/api?wsdl), ale nie można nazwać każdą procedurę z paramsAxis: createCall z params
Środowisko:
- JDK 1.8
- AXIS 1,4
- php 5.6
- Magento 1.6
Problem:
Na przykład product.info metoda API wymagane 2 params: sessionId
i productId
kod:
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}});
Sprawdziłem bazę danych, produkt rzeczywiście istnieje. bez względu na to, które id używany, otrzymuję błąd:
AxisFault
faultCode: 101
faultString: Product not exists.
próbuję kolejnych metod API, jak customer.info i mają ten sam rezultat.
jak poprawnie przekazać parametry?
co zrobiłem:
- disable wsdl cache on server side
- clean wsdl cache
- restart usług internetowych
Dzięki za odpowiedź, ale w każdym razie nie znaleziono produktu (ten sam błąd) Próbowałem różnych ID i SKU, ale to nie działa. Wiele osób pisze, że SOAP Magento jest bardzo błędny. –
Tak, użyłem tego w przyszłości. Nie ma powodu, dla którego go już nie używam ^^ – TheMirrox