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

Announcements
Join us to spark ideas for how to put the latest capabilities into action. Register here!
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