2016-03-07 40 views
5

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:

Odpowiedz

3

Dokumentacja Magento jest wadliwy: http://www.magentocommerce.com/api/soap/catalog/catalogProduct/catalog_product.info.html

Parametr "productId" jest w rzeczywistości nazywany "produktem".

+0

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. –

+1

Tak, użyłem tego w przyszłości. Nie ma powodu, dla którego go już nie używam ^^ – TheMirrox