Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Java] WSDL / SOAP?

Pagina: 1
Acties:

  • ZpAz
  • Registratie: September 2005
  • Laatst online: 20:48
Laat ik met de deur in huis vallen. Zelf heb ik geen ervaring met WSDL / SOAP services. Normaal doe ik alles via REST API's maar de betreffende website, Daisycon ondersteund dit niet.

Daisycon is een website welke affiliate links van diverse bedrijven verzameld en via hun website aanbied zodat publishers deze op hun website kunnen plaatsen.

Nu ben ik voor een project bezig met een systeem op te zetten om deze links periodiek op te halen en deze in een database te stopt. Zodat via een eigen webinterface gekozen kan worden welke affiliatie link op welke pagina moet worden toegevoegd. (dit is een startpagina variant).

Via de Daisycon zelf wordt het geheel in XML aangeboden als je het juiste linkje hebt gevonden naar de feed in hun interface, elke aanbieder van links heeft zo zijn eigen feed. In totaal gaat dit over veel data (geschat +- 50 - 100GB aan XML voor alle feeds).

Vandaar dat mijn keuze was om het geheel in Java op te halen in plaats van PHP waarin normaal de projecten voor deze klant worden gemaakt. Hiervoor wordt dan een managed VPS pakket gebruikt waar de applicatie op kan draaien.




Nu had ik de volgende link gevonden op api.daisycon.com. Een "WSDL" pagina voor de Feeds: http://api.daisycon.com/publisher/soap/feed/wsdl/

Deze heeft de "methode" "getFeeds" nu lijkt me dat de juiste "methode" die ik aan moet roepen. Maar hoe gaat dat in Java. Ik heb rondgezocht op WSDL Java en kom onder andere op Apache Axis & JBoss uit. Maar hoe dit aan de service te knopen is mij niet geheel duidelijk.

Met het zoeken naar tutorials op dit gebied kom ik steeds "wsdl -> java" generators tegen. Ik verwacht dat deze code genereerd met klassen welke corresponderen met de service. Maar hier krijg ik altijd errors bij (ik heb diverse geprobeerd, wsdl2java, wsimport en de ingebouwde in de IDE).

Nu weet ik niet precies waar de fout vandaan komt, misschien geef ik de verkeerde pagina op? Elke tool geeft een andere error, de meest beschrijvende was die van wsimport.

Als ik het volgende commando in de terminal uitvoer:
wsimport -d generated -extension -keep -p org.geluidje.daisycon -XadditionalHeaders http://api.daisycon.com/publisher/soap/feed/wsdl/
komt de volgende error tevoorschijn.
[ERROR] "Use of SOAP Encoding is not supported.
SOAP extension element on line 103 in http://api.daisycon.com/publisher/soap/feed/wsdl/ has use="encoded" "
Maar ook hier op Googlen geeft mij niet echt een resultaat waarmee ik verder kom. Ik weet niet eens zeker of ik wel in de "juiste richting" zit te denken.

Nu mijn vraag, zit ik in de juiste richting te denken, zou iemand mij hier een "zetje" bij kunnen geven. Misschien moet ik het helemaal anders aanpakken, maar momenteel zit ik vast.

Alvast bedankt!

Claude: "Domain patterns emerge from iteration, not generation." - Tweakers Time Machine Extension | Chrome : FF


  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 17:47
Ik zou kijken naar Apache CXF, dat is een veel gebruikte implementatie van JAX-WS en prima te gebruiken om een webservice client mee te bouwen die SOAP kan babbelen. Op de CXF website zijn aardig wat resources te vinden die berschrijven hoe het framework werkt, waaronder een simpel client voorbeeld.

  • ZpAz
  • Registratie: September 2005
  • Laatst online: 20:48
Als ik op de client voorbeeld pagina kijk wordt ik "omgeleid" naar onder andere de commandline pagina waarop wsdl2java staat uitgelegd. Maar deze pagina lijkt me verouderd aangezien de parameters die daar staan niet overéénkomen met de wsdl2java die ik heb gedownload in het "Axis 2.-1.6-2.2" pakket.

Als ik het volgende commando uitvoer:
Krijg ik een hele lange exception waar belangerijkste gedeelte volgens mij is:
Caused by: org.apache.axis2.schema.SchemaCompilationException: can not find type {http://schemas.xmlsoap.org/soap/encoding/}Array from the parent schema http://api.daisycon.com/publisher/soap//feed/
Als ik in de paramterlijst op de website zoek op "soap" krijg ik:
-exsh (true/false) Enables or disables processing of implicit SOAP headers (i.e. SOAP headers defined in the wsdl:binding but not wsdl:portType section.) Processing the SOAP headers requires the SOAP binding jars available on the classpath which was not the default in CXF 2.4.x and older. You may need to add a dependency to cxf-rt-binding-soap for this flag to work. Default is false.
Ik probeerde dus -exsh mee uit te voeren zodat het geheel wordt:
maar de betreffende parameter zit blijkbaar niet in mijn versie van wsdl2java, zie: deze paste. Ook een andere optie omtrend "SOAP" zie ik daar niet staan.

Deze tutorial was ik volgens mij ook al eerder tegengekomen, maar ook hier kwam ik helaas vast te zitten. Stuur ik nou een verkeerde pagina mee als parameter of moet ik het ergens anders zoeken, zo ja, waar?

edit:

Naar wat zoeken kom ik via deze site achter de volgende quote:
Axis2 doesn't support SOAP encoding
Nu zou dat de oorzaak kunnen zijn, hoewel ik niet helemaal snap wat "SOAP encoding" is.

edit2:

Nu met de -d xmlbeans parameter krijg ik wel code. Gedaan doordat ik op deze site uitkwam. Nu eens kijken wat "xmlbeans" is en of ik nu op de juiste weg ben.

[ Voor 14% gewijzigd door ZpAz op 11-07-2013 14:32 ]

Claude: "Domain patterns emerge from iteration, not generation." - Tweakers Time Machine Extension | Chrome : FF