Vecozo webservice - java - axis2

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • fix_j
  • Registratie: Mei 2010
  • Laatst online: 15-06-2023
Ik probeer vanuit java m.b.v. axis2 met de Vecozo webservice te communiceren.

Als eerste genereer ik een SOAP pakket met axis2...

Header:
XML:
1
2
3
4
<Authenticatie xmlns="http://www.vektis.nl/downloads/vz37-38/v10/wsdl"> 
  <zorgverlener>{14 cijferig nummer}</zorgverlener>
  <code>{code}</code>
</Authenticatie>


Payload:
XML:
1
2
3
4
5
6
7
8
9
10
11
<ControleerInput xmlns="http://www.vektis.nl/downloads/vz37-38/v10/wsdl">
 <Verzekerden>
  <Volgnummer>0</Volgnummer>
  <UZOVI-Nummer>71XX</UZOVI-Nummer>
  <GeboorteDatum>19XX-XX-XX</GeboorteDatum>
  <Postcode>XXXXYY</Postcode>
  <Huisnummer>XX</Huisnummer>
  <PeildatumVerzekering>2005-12-22</PeildatumVerzekering>
  <SoortVerzekering>94</SoortVerzekering>         <NAWVerzekerdeRetourneren>true</NAWVerzekerdeRetourneren>
 </Verzekerden>
</ControleerInput>



Nu krijg ik de volgende foutmelding als ik het SAOP pakket naar Vecozo verstuur:
Java:
1
2
3
4
5
6
7
8
org.apache.axis2.AxisFault: Geen toegang.
        at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:435)
        at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:371)
        at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:417)
        at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
        at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
        at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:540)
        at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:521)


Het versturen doe ik als volgt:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
            ServiceClient client = new ServiceClient();

            // create option object
            Options opts = new Options();

            // setting target EPR
            opts.setTo(new EndpointReference("https://acccertificaten.vecozo.nl/webservices/cov/vz3738.asmx"));

            // Setting action ,and which can be found from the wsdl of the service
            opts.setAction("http://www.vektis.nl/downloads/vz37-38/v10/wsdl#controleer");

            // setting created option into service client
            client.setOptions(opts);

            // add the header
            client.addHeader(createHeader());
            
            // send / recieve
            OMElement res = client.sendReceive(createPayLoad());



Ik heb een systeem certificaat van Vecozo, hoe zorg ik ervoor dat dit werkt met axis2. Tenminste ik vermoed dat bovenstaand probleem daar mee samenhangt...

Bedankt alvast !

[ Voor 0% gewijzigd door RobIII op 15-05-2010 12:32 . Reden: Postcode e.d. geanonimiseerd ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
XML:
1
<Poscode>XXXXYY</Poscode>

Mist daar geen T?

[edit] Oh, wacht; de foutmelding is "Geen toegang"...

[ Voor 36% gewijzigd door RobIII op 15-05-2010 12:32 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • fix_j
  • Registratie: Mei 2010
  • Laatst online: 15-06-2023
RobIII schreef op vrijdag 14 mei 2010 @ 15:42:
XML:
1
<Poscode>XXXXYY</Poscode> 

Mist daar geen T?

[edit] Oh, wacht; de foutmelding is "Geen toegang"...
Klopt, bedankt maar zal toch eerst door de "deur" heen moeten komen...

[ Voor 1% gewijzigd door RobIII op 15-05-2010 12:32 . Reden: Postcode e.d. geanonimiseerd ]


Acties:
  • 0 Henk 'm!

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Ik zie nergens dat je het X509 gebruikt. Je moet je wel identificeren met je certificaat voordat je toegang kunt krijgen.

edit, oh wacht, je laatste zin niet gelezen....

Geen idee hoe dit werkt met Java, maar al googlend kom ik wel van alles tegen op de zoektermen X509 en Ais, zoals bijvoorbeeld: http://security.ncsa.illi...sihttps/SampleClient.java. Misschien kun je daar iets mee?

[ Voor 58% gewijzigd door P_de_B op 14-05-2010 16:10 ]

Oops! Google Chrome could not find www.rijks%20museum.nl


Acties:
  • 0 Henk 'm!

  • Salandur
  • Registratie: Mei 2003
  • Laatst online: 15:18

Salandur

Software Engineer

je moet inderdaad het certificaat meegeven op in je call. Dit kan op 2 manieren:
1) via system properties (nooit doen in een server omgeving)
2) door org.apache.axis.components.net.SecureSocketFactory uit te breiden of een subclass te gebruiken.

De 2e optie geeft je de meeste controle.

Deze moet je vervolgens registreren met het volgende commando:
Java:
1
AxisProperties.setProperty("axis.SecureSocketFacotry", "<FQ class naam>");


Zie ook Axis Integratiation Guide/PluggableAPIs

[ Voor 33% gewijzigd door Salandur op 14-05-2010 16:33 . Reden: registratie ]

Assumptions are the mother of all fuck ups | iRacing Profiel


Acties:
  • 0 Henk 'm!

  • fix_j
  • Registratie: Mei 2010
  • Laatst online: 15-06-2023
Salandur schreef op vrijdag 14 mei 2010 @ 16:27:
je moet inderdaad het certificaat meegeven op in je call. Dit kan op 2 manieren:
1) via system properties (nooit doen in een server omgeving)
2) door org.apache.axis.components.net.SecureSocketFactory uit te breiden of een subclass te gebruiken.

De 2e optie geeft je de meeste controle.

Deze moet je vervolgens registreren met het volgende commando:
Java:
1
AxisProperties.setProperty("axis.SecureSocketFacotry", "<FQ class naam>");


Zie ook Axis Integratiation Guide/PluggableAPIs
Volgens mij is dat als je axis gebruikt en niet axis2, maar misschien moet ik maar axis gaan gebruiken ipv axis2...kom alleen maar voorbeelden tegen voor axis.

Bedankt voor de info...morgen nieuwe poging met axis(1).

Acties:
  • 0 Henk 'm!

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
offtopic:
jemig, ik google nog eens wat en de eerst hit die ik op Google kreeg was dit topic :P

Oops! Google Chrome could not find www.rijks%20museum.nl


Acties:
  • 0 Henk 'm!

  • fix_j
  • Registratie: Mei 2010
  • Laatst online: 15-06-2023
P_de_B schreef op vrijdag 14 mei 2010 @ 20:29:
offtopic:
jemig, ik google nog eens wat en de eerst hit die ik op Google kreeg was dit topic :P
Mag je na gaan dat ik dat een uur geleden had, ben toen maar aan de wijn gegaan 8)7

Acties:
  • 0 Henk 'm!

  • Salandur
  • Registratie: Mei 2003
  • Laatst online: 15:18

Salandur

Software Engineer

fix_j schreef op vrijdag 14 mei 2010 @ 20:27:
[...]


Volgens mij is dat als je axis gebruikt en niet axis2, maar misschien moet ik maar axis gaan gebruiken ipv axis2...kom alleen maar voorbeelden tegen voor axis.

Bedankt voor de info...morgen nieuwe poging met axis(1).
Ja, dit is inderdaad voor Axis1. Voor Axis2 moet er een soortgelijke optie zijn lijkt mij.

Na even Axis2 documentatie doorlezen het volgende tegengekomen:
Please note that by default HTTPS works only when the server does not expect to authenticate the clients (1-way SSL only) and where the server has the clients' public keys in its trust store. If you want to perform SSL client authentication (2-way SSL), you may use the Protocol.registerProtocol feature of HttpClient. You can overwrite the "https" protocol, or use a different protocol for your SSL client authentication communications if you don't want to mess with regular https. Find more information at http://jakarta.apache.org/commons/httpclient/sslguide.html
Hiervoor moet je ook een eigen protocol handler implementeren, maar dat staat daar duidelijker omschreven. Succes!

Edit:
Owja, een 'probleempje' met de Jakarta HttpClient is dat als in de (Get|Post)Method constructor de volledige URL opgegegeven wordt (dus met https://host ervoor), de ingestelde hostconfiguratie van de HttpClient genegeerd wordt. Je moet dan jouw protocol registeren als het default protocol voor https met Protocol.registerProtocol

[ Voor 15% gewijzigd door Salandur op 14-05-2010 23:25 ]

Assumptions are the mother of all fuck ups | iRacing Profiel


Acties:
  • 0 Henk 'm!

  • fix_j
  • Registratie: Mei 2010
  • Laatst online: 15-06-2023
Salandur schreef op vrijdag 14 mei 2010 @ 23:18:
[...]

Ja, dit is inderdaad voor Axis1. Voor Axis2 moet er een soortgelijke optie zijn lijkt mij.

Na even Axis2 documentatie doorlezen het volgende tegengekomen:


[...]

Hiervoor moet je ook een eigen protocol handler implementeren, maar dat staat daar duidelijker omschreven. Succes!

Edit:
Owja, een 'probleempje' met de Jakarta HttpClient is dat als in de (Get|Post)Method constructor de volledige URL opgegegeven wordt (dus met https://host ervoor), de ingestelde hostconfiguratie van de HttpClient genegeerd wordt. Je moet dan jouw protocol registeren als het default protocol voor https met Protocol.registerProtocol
Salandur schreef op vrijdag 14 mei 2010 @ 23:18:
[...]

Ja, dit is inderdaad voor Axis1. Voor Axis2 moet er een soortgelijke optie zijn lijkt mij.

Na even Axis2 documentatie doorlezen het volgende tegengekomen:


[...]

Hiervoor moet je ook een eigen protocol handler implementeren, maar dat staat daar duidelijker omschreven. Succes!

Edit:
Owja, een 'probleempje' met de Jakarta HttpClient is dat als in de (Get|Post)Method constructor de volledige URL opgegegeven wordt (dus met https://host ervoor), de ingestelde hostconfiguratie van de HttpClient genegeerd wordt. Je moet dan jouw protocol registeren als het default protocol voor https met Protocol.registerProtocol
Bedankt voor de informatie, ik ben gelijk aan de slag gegaan maar ik kreeg nog steeds dezelfde foutmelding. En ik weet nu waarom.... |:(


Het mechanisme om te versturen heb ik uitgebreid met:

Java:
1
2
3
4
5
            ServiceClient client = new ServiceClient();

            // set the custom SSL protocol
            Protocol myProtocolHandler = new Protocol("https", new ClientCertificateSocketFactory(), 443);
            Protocol.registerProtocol("https", myProtocolHandler);


De ClientCertificateSocketFactory heb ik "nagemaakt" van deze post.


En nu komt het....op een andere Tweakers post zie ik onderaan staan dat
1) Je mag maar tot 2 jaar in het verleden 'peilen' daarna krijg je errors (misschien dat iemand deze code in 2011 probeert ;)
2) Wat ook misschien handig is om te weten is dat de test certificaten alleen op test werken en de echte certificaten alleen op productie. Ik ging er (misschien dom) vanuit dat echte certs ook op de test zouden werken :)
Juist ja, ik zat dus met een productie certificaat op de test omgeving... |:(

Samengevat:
Protocol.RegisterProtocol is noodzakelijk met het juiste certificaat (productie of test) als je Axis2 wilt gebruiken.


Allen...bedankt voor de bijdrage!
Pagina: 1