Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Qlik and ServiceNow Partner to Bring Trusted Enterprise Context into AI-Powered Workflows. Learn More!
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

magento, retrieve new customers

Hello.
I want to retrieve new costumers from my magento web site with txmlrpcinput component.
I have the txmlrpcinput like this: server url: "http://mysite/api/xmlrpc"
auth=true and "apiuser" + "apikey"
method: "call"
when i run the job the errors are:
statistics] connecting to socket on port 3760
connected
Exception in component tXMLRPCInput_1
org.apache.xmlrpc.XmlRpcException: Calling parameters do not match signature
at org.apache.xmlrpc.client.XmlRpcStreamTransport.readResponse(XmlRpcStreamTransport.java:184)
Any ideia?
Thanks
Labels (4)
25 Replies
Anonymous
Not applicable
Author

Hi.
With webservice, I was unable to get any info.
Right now, I am working with mysql connections and so far so good.
Please advise if you find anything!
Take care
Ruben
Anonymous
Not applicable
Author

I figured it out so far:
Using:
api/?wsdl
And my first lines of code:
String url= "http://url.com/api/?wsdl";
MagentoServiceLocator locator = new MagentoServiceLocator();
Mage_Api_Model_Server_HandlerPortType port = locator.getMage_Api_Model_Server_HandlerPort ( new java.net.URL(url) );

which works fine until now.
Then I add:
String sessionId = port.login("soapadmin", "password");

which throws and error:
Exception in component tWebServiceInput_1
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: org.xml.sax.SAXException: Bad envelope tag: definitions
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace0683p000009MA5A.pngrg.xml.sax.SAXException: Bad envelope tag: definitions
at org.apache.axis.message.EnvelopeBuilder.startElement(EnvelopeBuilder.java:71)
at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1048)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:504)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:376)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:602)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3080)
disconnected
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:899)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:625)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:488)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:819)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:748)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1208)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:525)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:392)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at routines.Mage_Api_Model_Server_HandlerBindingStub.login(Mage_Api_Model_Server_HandlerBindingStub.java:338)
at magentotest.magentotest_0_1.Magentotest.tWebServiceInput_1Process(Magentotest.java:458)
at magentotest.magentotest_0_1.Magentotest.runJobInTOS(Magentotest.java:773)
at magentotest.magentotest_0_1.Magentotest.main(Magentotest.java:641)
{http://xml.apache.org/axis/}hostname:boindil
org.xml.sax.SAXException: Bad envelope tag: definitions
at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:701)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at routines.Mage_Api_Model_Server_HandlerBindingStub.login(Mage_Api_Model_Server_HandlerBindingStub.java:338)
at magentotest.magentotest_0_1.Magentotest.tWebServiceInput_1Process(Magentotest.java:458)
at magentotest.magentotest_0_1.Magentotest.runJobInTOS(Magentotest.java:773)
at magentotest.magentotest_0_1.Magentotest.main(Magentotest.java:641)
Caused by: org.xml.sax.SAXException: Bad envelope tag: definitions
at org.apache.axis.message.EnvelopeBuilder.startElement(EnvelopeBuilder.java:71)
at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1048)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:504)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:376)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:602)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3080)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:899)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:625)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:488)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:819)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:748)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1208)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:525)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:392)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
... 12 more

Bad envelope tag? Where does it come from? 0683p000009MPcz.png
Anonymous
Not applicable
Author

Any ideas on that one?
Unfortunately I couldn't get any further 0683p000009MPcz.png
_AnonymousUser
Specialist III
Specialist III

To get Magento done, you need to:
1) get sessionid from magento
2) store sessionid in global map
3) call magento webservices with that sessionid
here we go:
1:
a) create a tsoap component:
uncheck all of
Use NTLM
Need authentication?
Use http proxy
Trust server with SSL

set ENDPOINT to:
"http://yourdomain_or_ip/index.php/api/v2_soap"

set SOAP Action to
"urn:Mage_Api_Model_Server_V2_HandlerAction"

set SOAP version to
SOAP 1.1

uncheck
Use message from the schema

check
Output in document

set SOAP message to
"<soapenv:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:urn=\"urn:Magento\">
<soapenv:Header/>
<soapenv:Body>
<urn:login soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">
<username xsi:type=\"xsd:string\">mysoapuser</username>
<apiKey xsi:type=\"xsd:string\">mysoap_password</apiKey>
</urn:login>
</soapenv:Body>
</soapenv:Envelope>"

b) create tExtractXMLField component and set main row from component of a) to this tExtractXMLField
set Property Type and Schema to
Built-In

Edit Schema and set Input to
Soap

and output to
sessionId

set XML field to
Soap

set Loop XPATH query to
"/*"

set mapping of column sessionId to
"//loginReturn"

2:
create tJavaRow component and set main row from component of 1b) to this tJavaRow
In Basic Settings of tJavaRow put the following code:
globalMap.put("sessionId", input_row.sessionId);

3:
a) create a tXMLMap and add an output table
create a column in it called
soapRequest

of type
Document

rename automatic appended "root" child of soapRequest to
soapenv:Envelope

and set it as loop element
create child node of soapenv:Envelope called
soapenv:Header

create child node of soapenv:Envelope called
soapenv:Body

create child node of soapenv:Body called
customerCustomerList

create child node of customerCustomerList called
sessionId

and set the value (column "expression" left to it) to
globalMap.get("sessionId")

append a tLogRow
run job and watch your output
Anonymous
Not applicable
Author

Hello everyone,
I want call the Magento SOAP API to retrieve the list of categories and the basket (adding + modification) using Talend. For this, we must first recover an id session from magento, store it and then use it to call the API.
I tried with tWebServiceInput but it does not work, and since it's the first time I use it, I do not know how to do.

If anyone can help me it would be really great. Thank you in advance.
rafaeltrein
Contributor
Contributor

Hello David_p,
Thanks a lot! Your script works fine to connect to Magento. 
However, I'm still dont know how I use de API services, like set a order status, or list orders for example.
Anyone can help me?
Thanks!
Rafael