Hello beste mensen,
Omdat ik het even niet meer zie zitten (vind geen logisch verklaring en zoeken op Google levert me ook niets op) even kort hier vragen aangezien we samen er wel uit zullen komen.
Heb dus via Netbeans een SOAP webservice opgezet die behoorlijk werkt zoals het hoort. Achterliggend zit er MySQL en beheer ervan gebeurd met behulp van Hibernate. Dat even ter zijde.
In de webservice is er een methode namelijk:
Het probleem zit hem bij xmlMeetingroom. Deze vorm ik namelijk via een XML parser even later om naar een echt Meetingroom object. Dit werkt perfect als ik de webservice zijn testpagina opvraag en daar gewoon XML in gooi.
Deze pagina dus, het 2de vakje.

Ik geef daar de volledige XML in als volgt:
Als ik dan debug, en bovenstaande invul op de test pagina, dan kom ik in de webservice en bevat xmlMeetingroom gewoon bovenstaande XML als waarde in de vorm van een String. Die word dan netjes omgevormd naar een echt object en alles loopt zoals het hoort.
Maar als ik dit nu simuleer als een client en volgende SOAP message opstel:
Dan werkt het niet. Terwijl dit een 100% kopie is van hetgeen op de testpagina als result komt:

De waarde van personid in de webservice is dan opgevuld, date is ook opgevuld, maar xmlMeetingroom blijft leeg...
Iemand een idee wat dit kan zijn?
Het simuleren van een client doe ik door een apart project met volgende code (snippet):
Even als opmerking. Bovenstaande snippet gebruik ik ook voor andere methodes, en die werken allemaal 100%.
Waar ligt de fout?
Omdat ik het even niet meer zie zitten (vind geen logisch verklaring en zoeken op Google levert me ook niets op) even kort hier vragen aangezien we samen er wel uit zullen komen.
Heb dus via Netbeans een SOAP webservice opgezet die behoorlijk werkt zoals het hoort. Achterliggend zit er MySQL en beheer ervan gebeurd met behulp van Hibernate. Dat even ter zijde.
In de webservice is er een methode namelijk:
Java:
1
2
3
| public Boolean ReservateMeetingRoom(@WebParam(name = "personid") int personid, @WebParam(name = "xmlMeetingroom") String xmlMeetingroom, @WebParam(name = "date") String stringDate) { |
Het probleem zit hem bij xmlMeetingroom. Deze vorm ik namelijk via een XML parser even later om naar een echt Meetingroom object. Dit werkt perfect als ik de webservice zijn testpagina opvraag en daar gewoon XML in gooi.
Deze pagina dus, het 2de vakje.
Ik geef daar de volledige XML in als volgt:
XML:
1
2
3
4
5
6
7
| <Persist.Meetingroom> <subject>Webservice test!</subject> <numberparticipants>99</numberparticipants> <typeclient>Special</typeclient> <starttime class="sql-time">20:00:00</starttime> <endtime class="sql-time">20:30:00</endtime> </Persist.Meetingroom> |
Als ik dan debug, en bovenstaande invul op de test pagina, dan kom ik in de webservice en bevat xmlMeetingroom gewoon bovenstaande XML als waarde in de vorm van een String. Die word dan netjes omgevormd naar een echt object en alles loopt zoals het hoort.
Maar als ik dit nu simuleer als een client en volgende SOAP message opstel:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| <?xml version="1.0" encoding="UTF-8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Header/> <S:Body> <ns2:ReservateMeetingRoom xmlns:ns2="http://WebService/"> <personid>6</personid> <xmlMeetingroom> <Persist.Meetingroom> <subject>Webservice test!</subject> <numberparticipants>99</numberparticipants> <typeclient>Special</typeclient> <starttime class="sql-time">20:00:00</starttime> <endtime class="sql-time">20:30:00</endtime> </Persist.Meetingroom> </xmlMeetingroom> <date>2012-10-10</date> </ns2:ReservateMeetingRoom> </S:Body> </S:Envelope> |
Dan werkt het niet. Terwijl dit een 100% kopie is van hetgeen op de testpagina als result komt:
De waarde van personid in de webservice is dan opgevuld, date is ook opgevuld, maar xmlMeetingroom blijft leeg...
Iemand een idee wat dit kan zijn?
Het simuleren van een client doe ik door een apart project met volgende code (snippet):
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| //build up the HTTP message String SOAPMessage = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">" + "<S:Header/>" + "<S:Body>" + "<ns2:ReservateMeetingRoom xmlns:ns2=\"http://WebService/\">" + "<personid>6</personid>" + "<xmlMeetingroom>" + "<Persist.Meetingroom>" + "<subject>Webservice test!</subject>" + "<numberparticipants>99</numberparticipants>" + "<typeclient>Special</typeclient>" + "<starttime class=\"sql-time\">20:00:00</starttime>" + "<endtime class=\"sql-time\">20:30:00</endtime>" + "</Persist.Meetingroom>" + "</xmlMeetingroom>" + "<date>2012-10-10</date>" + "</ns2:ReservateMeetingRoom>" + "</S:Body>"; //System.out.println(SOAPMessage); connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setRequestProperty("SOAPAction", "http://WebService/"); connection.setRequestProperty("Content-Type", "text/xml; charset=utf-8"); connection.setRequestProperty("Content-Length", "" + Integer.toString(SOAPMessage.getBytes().length)); connection.setRequestProperty("Content-Language", "en-US"); |
Even als opmerking. Bovenstaande snippet gebruik ik ook voor andere methodes, en die werken allemaal 100%.
Waar ligt de fout?