[SOAP] Javascript en XML gaat niet

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Anoniem: 62857

Topicstarter
Hallo,

De afgelopen tijd ben ik bezig geweest met de bouw van een koppeling naar VECOZO. Dit is een afgeschermde dienst die alleen werkt wanneer je beschikt over het SSL certificaat. Dit certificaat heb ik geinstalleerd. Ik gebruik Vista (SP1) met Internet Explorer 7.

Via SOAP kunnen we een XML bericht zenden en vervolgens zouden we een XML bericht terug moeten krijgen met daarin gegevens van verzekerden.

Onze applicatie is een webapplicatie en via javascript probeer ik de SOAP call te doen. Andere SOAP diensten krijg ik wel aan de praat, maar de dienst met VECOZO niet.

SOAP dienst: https://acccertificaten.v...bservices/cov/vz3738.asmx
WDSL:http://www.vektis.nl/downloads/vz37-38/v10/wsdl/vz37-38.wsdl

Ik krijg continue de melding Bad Request in javascript. Ik krijg geen XML terug.

ps. In de WDSL staat UTF-8, in het voorbeeld XML bericht UTF-16. Na een uitvoerige mailwisseling is volgens Vecozo dat niet het probleem. Zij zeggen dat mijn XML bericht valide is. Ik weet zo ongeveer niet meer wat ik fout doe...

Javascript:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
xmlhttp.open("POST", "https://acccertificaten.vecozo.nl/webservices/cov/vz3738.asmx", false);
xmlhttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xmlhttp.setRequestHeader("SOAPAction", "http://www.vektis.nl/downloads/vz37-38/v10/wsdl#controleer");
xmlhttp.setRequestHeader("Content-Length", xmlDoc.xml.length);
xmlhttp.setRequestHeader("Man", "POST https://acccertificaten.vecozo.nl/webservices/cov/vz3738.asmx?op=controleer HTTP/1.1");
xmlhttp.setRequestHeader("Host", "acccertificaten.vecozo.nl");
xmlhttp.onreadystatechange=function() {

alert('status:'+xmlhttp.status);
if (xmlhttp.readyState==4) 
{
    alert('readystate:'+xmlhttp.responseXML);
}
}

alert('lengte:' + xmlDoc.xml.length);


Voorbeeld XML bestand dat ik verstuur:

code:
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
<?xml version="1.0" encoding="utf-16"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
 <soap:Header>
   <Authenticatie xmlns="http://www.vektis.nl/downloads/vz37-38/v10/wsdl">
     <zorgverlener>20024000180001</zorgverlener>
     <code>20024000180001</code>
   </Authenticatie>
 </soap:Header>
 <soap:Body>
   <ControleerInput xmlns="http://www.vektis.nl/downloads/vz37-38/v10/wsdl">
     <Verzekerden>
       <Verzekerde>
         <Volgnummer>0</Volgnummer>
         <UZOVI-Nummer>7119</UZOVI-Nummer>
         <GeboorteDatum>1932-01-06</GeboorteDatum>
         <Postcode>5953KG</Postcode>
         <Huisnummer>33</Huisnummer>
         <PeildatumVerzekering>2005-12-22</PeildatumVerzekering>
         <SoortVerzekering>94</SoortVerzekering>
         <NAWVerzekerdeRetourneren>true</NAWVerzekerdeRetourneren>
       </Verzekerde>
     </Verzekerden>
   </ControleerInput>
 </soap:Body>
</soap:Envelope>

Acties:
  • 0 Henk 'm!

  • purge
  • Registratie: November 2000
  • Niet online
Ik kan mij voorstellen dat het certificaat op de machine moet staat waar het SOAP request vandaan komt. Mag ik er vanuit gaan (omdat je praat over een webapplicatie icm javascript) dat het stukje javascript / soap call vanaf een werkstation word uitgevoerd?
Meestal gebeuren deze calls serverside dan hoef je maar op 1 machine het certificaat te installeren en kan je serverside het resultaat controleren.
Verder zien de headers en xml er goed uit.

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
xmlHttp requests kun je alleen doen op dezelfde server zover ik weet. Je doet nu een request naar een externe server en dat is niet toegestaan ivm. beveiliging.

Acties:
  • 0 Henk 'm!

Anoniem: 62857

Topicstarter
@purge.. dat klopt. Het is een webapplicatie. Het certificaat is geinstalleerd op mijn windowsbak. Mijn uitwijk is mogelijk nuSoap installeren als php extentie, maar het zou handig zijn als het ook via het werkstation kan. Dit moet toch mogelijk zijn? Immers, andere SOAP diensten werken wel op deze manier.

@cartman. dat klopt, maar ik heb in me IE access datasources cross-domain op toegestaan gezet en de verschillende sites toegevoegd in me lijst van vertrouwde sites.

Wat denken jullie? Hier geen moeite meer in stoppen en aan de slag met SOAP op de server?

Acties:
  • 0 Henk 'm!

  • joppybt
  • Registratie: December 2002
  • Laatst online: 04-06 23:50
Moet je niet ook aangeven wélk certificaat wordt gebruikt? Met iets als:

var SXH_OPTION_SELECT_CLIENT_SSL_CERT=3;
var SoapCertificateName="LOCAL_MACHINE\\My\\certificaatnaam"; // waar is hij geinstalleerd?
xmlhttp.setOption(SXH_OPTION_SELECT_CLIENT_SSL_CERT, SoapCertificateName)

Op welk statement krijgt je precies de 'Bad Request' terug? Op de 'send' die je niet in je code toont (maar vast wel gebruikt neem ik aan)?

Kunnen ze aan de andere kant zien of er wel iets van jou uberhaubt binnenkomt? Of komt de request eigenlijk jou PC niet af?

Tenslotte: je doet de open met false, dus synchroon. Wordt onreadystatechange dan nog wel aangeroepen eigenlijk (ik weet niet precies hoe dit werkt).

Acties:
  • 0 Henk 'm!

  • purge
  • Registratie: November 2000
  • Niet online
Na snel zoekwerk gaf iemand aan op ander forum (een heel stuk naar beneden scrollen)
To use certificates, you will have to use "ServerXMLHTTP.4.0"
(zoals joppybt al zegt)
code:
1
2
3
4
5
...
var xmlhttp = new ActiveXObject("MSXML2.ServerXMLHTTP.4.0")
...
xmlhttp.setOption 3, "cert.here.com"
...

[ Voor 9% gewijzigd door purge op 28-03-2008 23:46 ]


Acties:
  • 0 Henk 'm!

Anoniem: 62857

Topicstarter
Ben er nog mee aan de slag;

Certificaat kan ik normaliter kiezen uit een lijstje. Daarna gaat JS verder en krijg ik uiteindelijk de bad request.

Ingeven van var xmlhttp = new ActiveXObject("MSXML2.ServerXMLHTTP.4.0") leidt tot een fout, namelijk "Automation server can't create object" in Javascript...

Ik ga nu starten met het installeren van een SOAP extensie op de server. Kijken of dat beter wil. Mocht iemand nog suggesties houden voor wat betreft dit zeepprobleem, houd ik me van harte aanbevolen :)

Acties:
  • 0 Henk 'm!

Anoniem: 62857

Topicstarter
Korte update:

NuSoap, CURL, SSL-Certificaat van Vecozo en aanverwante artikelen op de server geinstalleerd en geconfigureerd.
Weer een 400 Bad Request. Ik begin zo langzamerhand te twijfelen aan het certificaat. Ik ga nu kijken of ik ergens kan testen of het certificaat goed werkt.


code:
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
30
31
32
33
34
35
36
37
38
Error
HTTP Error: Unsupported HTTP response status 400 Bad Request (soapclient->response has contents of the response)
Request
POST /webservices/cov/vz3738.asmx HTTP/1.1
Host: acccertificaten.vecozo.nl
Content-Type: text/xml; charset=utf-16
SOAPAction: "http://www.vektis.nl/downloads/vz37-38/v10/wsdl#controleer"
Content-Length: 835

<?xml version="1.0" encoding="utf-16"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
 <soap:Body>
   <ControleerInput xmlns="http://www.vektis.nl/downloads/vz37-38/v10/wsdl">
     <Verzekerden>
       <Verzekerde>
         <Volgnummer>0</Volgnummer>
         <UZOVI-Nummer>7119</UZOVI-Nummer>
         <GeboorteDatum>1932-01-06</GeboorteDatum>
         <Postcode>5953KG</Postcode>
         <Huisnummer>33</Huisnummer>
         <PeildatumVerzekering>2005-12-22</PeildatumVerzekering>
         <SoortVerzekering>94</SoortVerzekering>
         <NAWVerzekerdeRetourneren>true</NAWVerzekerdeRetourneren>
       </Verzekerde>
     </Verzekerden>
   </ControleerInput>
 </soap:Body>
</soap:Envelope>
Response
HTTP/1.1 400 Bad Request
Connection: close
Date: Wed, 02 Apr 2008 07:46:33 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: .ASPXAUTH=AF7E52072466C3D29F09B87AF1683C479BBF9A61FD49E36DAB2BD5872B1754A36E952B7BFCBD3148B3A3063C748AEBDC0382931F652A4B37A696815500A413100977813641C0569323C836773DE416C119260D0C190BFB99A881192887368003; path=/
Cache-Control: private
Content-Type: text/html

Acties:
  • 0 Henk 'm!

  • joppybt
  • Registratie: December 2002
  • Laatst online: 04-06 23:50
Moet je misschien in plaats van POST gewoon GET gebruiken?

Heb je het ondertussen op de server geinstalleerd? Wat voor server?
Krijg je nog steeds een popup om je certificaat te kiezen?
Wat voor code gebruik je ondertussen?
Ik zou toch echt MSXML2.ServerXMLHTTP.4.0 gaan gebruiken, desnoods moet je MSXML van Microsoft downloaden en installeren.

Acties:
  • 0 Henk 'm!

  • purge
  • Registratie: November 2000
  • Niet online
Ben je al iets verder?
Ik heb niet veel informatie voor je maar (volgens mij) zit er verschil tussen tussen een HTTP POST request en een SOAP request.Als ik https://acc.../asmx bekijk dan accepteren ze alleen SOAP requests (1.1 & 1.2). Ik hoop dat je hiermee verder kunt.

ps HTTP GET is geen optie omdat je hiermee geen gegevens kan meesturen (behalve header informatie dan)

[ Voor 18% gewijzigd door purge op 03-04-2008 23:31 ]


Acties:
  • 0 Henk 'm!

Anoniem: 14829

Idd zo te zien geen ondersteuning voor HTTP POST. Nogal ongebruikelijk bij asp.net webservices, maar ja, je kunt 't uitschakelen, en daar zullen ze wel hun redenen voor hebben. Bv. om ervoor te zorgen dat een gewone client niets aan hun SSL certificate heeft.

Acties:
  • 0 Henk 'm!

Anoniem: 62857

Topicstarter
Quick update: de acceptatieomgeving (die ik dus gebruik) ligt eruit bij Vecozo..al anderhalve week lang. Kwamen ze wat laat achter...*zucht*

Acties:
  • 0 Henk 'm!

Anoniem: 62857

Topicstarter
Uiteindelijk is ook dit goedgekomen ;) . Nadat de site weer in de lucht was werkte eea goed.

Topique mag dus dicht wat mij betreft.

Voor andere mensen met hetzelfde probleem:
code:
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
include("include/nusoap/nusoap.php");
    $DEBUG=false;
    /* set search values */
    $geboortedatum=convertDate("DUTCH","AMERICAN",$params['geboortedatum']);
    $patientnummer=$params['patientnummer'];
    $peildatum=convertDate("DUTCH","AMERICAN",$params['peildatum']);
    $verzekering=$params['verzekering'];
    $postcode=$params['postcode'];
    $huisnummer=$params['huisnummer'];
    $toevoeging = $params['toevoeging'];
    $achternaam = $params['achternaam'];
    $uzovinummer=$params['uzovinummer'];
    $bsn = $params['bsn'];
    $verzekerdennummer = $params['verzekerdennummer'];
    //$geslacht=
    
    $cfg_vecozoSoapUrl = "https://acccertificaten.vecozo.nl/webservices/cov/vz3738.asmx?WSDL";
    $cfg_vecozoCAINFO = "include/nusoap/vecozo2008.pem";
    $cfg_vecozoSSLCERT = "include/nusoap/vecozo2008.pem";
    

    $vecozo_client = new nusoap_client($cfg_vecozoSoapUrl,true);
    $vecozo_client->soap_defencoding = 'utf-8';
    
    /* credentials */
  $certdata['cainfofile'] = $cfg_vecozoCAINFO;    
  $certdata['sslcertfile'] = $cfg_vecozoSSLCERT;
  $certdata['passphrase'] = '';
  $certdata['verifypeer'] = 0;
  $certdata['verifyhost'] = 0;
  $vecozo_client->setCredentials('nouser','nopass','certificate',$certdata);
  
  /* build xml */
        $p1 =" <ControleerInput
xmlns='http://www.vektis.nl/downloads/vz37-38/v10/wsdl'>";
        $p1 .= "<Verzekerden>";
        $p1 .= "<Verzekerde>";
        $p1 .= "<Volgnummer>0</Volgnummer>";
        //$p1 .= "<PatientNummer>".$patientnummer."</PatientNummer>";
        if ($uzovinummer!="")   $p1 .= "<UZOVI-Nummer>".$uzovinummer."</UZOVI-Nummer>";
        
        $p1 .= "<GeboorteDatum>".$geboortedatum."</GeboorteDatum>";
        if(strlen($bsn) > 0)
            $p1 .= "<BSN>".$bsn."</BSN>";
        if(strlen($verzekerdennummer) > 0)
            $p1 .=
"<VerzekerdenNummer>".$verzekerdennummer."</VerzekerdenNummer>";
        if(strlen($postcode) > 0)
            $p1 .= "<Postcode>".$postcode."</Postcode>";
        if(strlen($huisnummer) > 0)
            $p1 .= "<Huisnummer>".$huisnummer."</Huisnummer>";
        if(strlen($toevoeging) > 0)
            $p1 .=
"<HuisnummerToevoeging>".$toevoeging."</HuisnummerToevoeging>";
        if(strlen($achternaam) > 0 )
            $p1 .= "<Achternaam>".$achternaam."</Achternaam>";
        //$p1 .= "<Geslacht>".$geslacht."</Geslacht>";
        $p1 .=
"<PeildatumVerzekering>".$peildatum."</PeildatumVerzekering>";
        $p1 .= "<SoortVerzekering>".$verzekering."</SoortVerzekering>";
        $p1 .= "<NAWVerzekerdeRetourneren>true</NAWVerzekerdeRetourneren>";
        $p1 .= "</Verzekerde>";
        $p1 .= "</Verzekerden>";
        $p1 .= "</ControleerInput>";
        
        $namespace ="http://www.vektis.nl/downloads/vz37-38/v10/wsdl";
        $ret = array();
        $ret = $vecozo_client->call('controleer', $p1, $namespace ,'',$headers,'','literal');
        $err = $vecozo_client->getError();
        if ($err) {
            $resultObject->result=false;
                    $resultObject->response="Invoer leidt tot ongeldig SOAP verzoek.";
                    return $resultObject;
         //echo '<h2>Error</h2><pre>' . $err . '</pre>';
        }
        //echo 'Request \n' . $vecozo_client->request . '/n>';
        if($DEBUG)
        {
            echo '<h2>Request</h2><p>' . 
htmlspecialchars($vecozo_client->request,ENT_QUOTES) . '</p>';
            echo '<h2>Response</h2><p>' . 
htmlspecialchars($vecozo_client->response,ENT_QUOTES) . '</p>';
        }   
        //echo 'Debug \n' .$vecozo_client->debug_str . '/n';
        //echo "Headers \n".$vecozo_client->getHeaders;
        $xmlheader = $vecozo_client->getHeaders();
        if($DEBUG)
        {
            echo "<br>HEADER:";
            echo htmlspecialchars($xmlheader,ENT_QUOTES); echo "<br>";
            echo "<br>DEBUG:";
            echo $vecozo_client->debug_str; echo "<br>";
        }
        $ret_verzekerden = array();
        $ret_verzekerden = $ret['Verzekerden'];
        $ret_verzekering = array();
        $ret_verzekering = $ret_verzekerden['Verzekering'];
       
        $singlearray=$multiarray=false;
        if(isset($ret_verzekering['ResultaatCodeCOV']))
            $singlearray = true;
        else
            $multiarray = true;
        if(isset($ret_verzekering))
        {
            if($multiarray) {
                $resultaatcode = $ret_verzekering[0]['ResultaatCodeCOV'];
            } else {
                $resultaatcode = $ret_verzekering['ResultaatCodeCOV'];
            }   
        } else
            $resultaatcode = $ret_verzekerden['ResultaatcodeCOV'];
           
        if($DEBUG)
            echo "Verzekerden resultaat=". 
$ret_verzekerden['ResultaatcodeCOV']. "<br>";
            // print_r($ret_verzekerden);
            echo "<br>";

Acties:
  • 0 Henk 'm!

Anoniem: 258945

Ik wil ook een koppeling met Vecozo bewerkstelligenmet PHP, maar ben nog niet echt gevorderd met het versturen en ontvangen van XML berichtjes..

Je code is uiteraard een stap voorwaarts, maar zou je me iets verder op weg kunnen helpen ?

- Ik krijg een fout bij regel 68,hoe moet ik $headers toekennen?
- Hoe is het volgende bestand opgebouwd vecozo2008.pem?

Alvast bedankt...

Acties:
  • 0 Henk 'm!

Anoniem: 258945

Ik ben al iets verder (heb certificaat omgezet en voor headers heb ik een lege string genomen)..

Ik krijg de volgende foutmelding:
Error is wsdl error: HTTP ERROR: cURL ERROR: 58: unable to use client certificate (no key found or wrong pass phrase?)

Waar zit de fout en hoe kan ik deze oplossen?

Acties:
  • 0 Henk 'm!

  • !null
  • Registratie: Maart 2008
  • Laatst online: 26-05 07:05
Is het niet handiger om de SOAP extensie te gebruiken van PHP? Of hebben jullie geen rechten op de servers om dit voor elkaar te krijgen? Verder heb ik geen ervaring met de combinatie van de PHP SOAP extensie met SSL.
Serverside lijkt me iig beter, goeie zet dus.

Ampera-e (60kWh) -> (66kWh)


Acties:
  • 0 Henk 'm!

Anoniem: 62857

Topicstarter
@GreenSky Soap extensie van PHP ben ik wel mee bezig geweest, maar uiteindelijk kreeg ik het via NuSOAP aan de praat.

@MrXavier:
Je hebt een geldig Vecozo certificaat? Je kunt dit aanvragen bij Vecozo (check vecozo.nl).

Je kunt me ook mailen voor meer info. Dat kan via jhakroeze apestaart gmail punt com

Acties:
  • 0 Henk 'm!

  • mariusdustbin
  • Registratie: April 2003
  • Laatst online: 04-05 10:35
Cartman! schreef op vrijdag 28 maart 2008 @ 18:25:
xmlHttp requests kun je alleen doen op dezelfde server zover ik weet. Je doet nu een request naar een externe server en dat is niet toegestaan ivm. beveiliging.
Dit is afhankelijk van het certificaat wat je aangevraagd hebt. Je hebt de keuze uit een persoons gebonden certificaat of een x509 (of wat het 905) certificaat.

Overigens, mooie ellende bij vektis&vecozo, maar alles beter dan de papieren tijgesr uit het verleden

Acties:
  • 0 Henk 'm!

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Dit is afhankelijk van het certificaat wat je aangevraagd hebt. Je hebt de keuze uit een persoons gebonden certificaat of een x509 (of wat het 905) certificaat.
Nee, cross domains requests via XmlHttpRequest geven ALTIJD een foutmelding, zelfs een ander subdomein werkt niet. Dat heeft niets met (EV)SSL certificaten te maken, maar met het feit dat dergelijke mogelijkheden in javascript altijd misbruikt worden.

En om te voorkomen dat zonder dat je het weet informatie naar een website wordt gestuurd kun je dus geen ajax calls doen. Of was je alweer vergeten hoe bijvoorbeeld de history list werd misbruikt? In MSIE kon je tot XP SP2 ook frameset url's van andere sites benaderen, maar ook die feature werd zwaar misbruikt.

Hackers maakte dan een frameset (op bijv. abmamro.nl) met daarin 1 frame (meestal naar je bank) en vervolgens werd de url van je bank ingeladen. En vervolgens werd dan gewoontjes de ingevulde formulieren uitgelezen. Andere browsers hadden dit lek al eerder gedicht, maar SP2 regelde dit pas voor MSIE.

If it isn't broken, fix it until it is..


Acties:
  • 0 Henk 'm!

Anoniem: 262544

Beste Tweakers,

Ik zit ook met een probleem met vecozo. Ik probeer namelijk declaratiebestanden te versturen naar de webservice van vecozo, maar vooralsnog krijg ik alleen maar een foutmelding terug:
[faultcode] => q0:VECOZOEDP100
[faultstring] => Verzending is leeg
[faultactor] => /webservices/EDPV5/Declareren.asmx
[detail] => Array
(
[GUID] => 26559329-ab2f-455d-a325-4db0d9c08d0c
)

Ik programmeer ook in PHP icm met nusoap.

Ik heb van de vektis website declaratiebestanden gebruikt en ook van vecozo heb ik testdeclaratiebestanden ontvangen, maar welk bestand ik ook gebruik ik blijf dezelfde foutmelding krijgen.
Ik heb geprobeerd de bestanden ongewijzigd te versturen en ook base64 encoded, zonder resultaat.

Hieronder de code die ik gebruik:
code:
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
30
31
32
33
34
35
36
37
38
39
40
41
    $sWSDL              = "https://acccertificaten.vecozo.nl/webservices/EDPV5/Declareren.asmx?WSDL";
    $sCARootCertificaat = "../../../../../certificaten/vecozo/0499999/0499999.pem";
    $sSSLCertificaat    = "../../../../../certificaten/vecozo/0499999/0499999.pem";

    $sDeclaratieBestand = "./declaratiebestanden/PM304_test.asc";
    $sFilename          = "PM304_test.asc";
    $sFilesize          = filesize($sDeclaratieBestand);
    $fhDeclaratie       = fopen($sDeclaratieBestand, "r");

    # met base64 encodering
    $sDeclaratieData    = base64_encode( fread($fhDeclaratie, $sFilesize) );
    # zonder base64 encodering
    //$sDeclaratieData  =  fread($fhDeclaratie, $sFilesize) ;
    fclose($handle);

    $oClient            = new soapclient($sWSDL, true);
    $oClient->soap_defencoding = 'utf-8';

    $aCertRequest['cainfo']         = $sCACertificaat;    
    $aCertRequest['sslcertfile']    = $sSSLCertificaat;
    $aCertRequest['verifypeer']     = 0;        // 1|0, defaults to 1 if not set
    $aCertRequest['verifyhost']     = 0;        // 1|0, defaults to 1 if not set
    
    $oClient->setCredentials('','','certificate',$aCertRequest);

    # XML Opbouwen
    $sRequest .= "<Indienen xmlns='http://www.vecozo.nl/EDP/v1/'>";
        $sRequest .= "<request>";
            $sRequest .= "<Verzending>";
                $sRequest .= "<Bestand>";
                    $sRequest .= "<FileName>".$sFilename."</FileName>";
                    $sRequest .= "<FileSize>".$sFilesize."</FileSize>";
                    $sRequest .= "<Data>".$sDeclaratieData."</Data>";
                $sRequest .= "</Bestand>";
                $sRequest .= "<Email>".$sEmail."</Email>";
                $sRequest .= "<Referentie>".$sReferentie."</Referentie>";
            $sRequest .= "</Verzending>";
        $sRequest .= "</request>";
    $sRequest .= "</Indienen>";
    
    $sNamespace = "http://www.vecozo.nl/EDP/v1/Indienen";


en dit is dan mijn soap request:
code:
1
2
3
4
5
6
7
8
POST /webservices/EDPV5/Declareren.asmx HTTP/1.0
Host: acccertificaten.vecozo.nl
User-Agent: NuSOAP/0.7.3 (1.114)
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://www.vecozo.nl/EDP/v1/Indienen"
Content-Length: 2302

<?xml version="1.0" encoding="utf-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns2572="http://www.vecozo.nl/EDP/v1/Indienen"><SOAP-ENV:Body><Indienen xmlns='http://www.vecozo.nl/EDP/v1/'><request><Verzending><Bestand><FileName>PM304_test.asc</FileName><FileSize>1248</FileSize><Data>MDExMDcwMzAyVDk5OTgwMTEgICAgICAgICAxMDAwMDAwMDAwMDAwNDAzNzIxMDA0MDAyNzk0MDAwMDAwMDAwMzIwMDYxMjAxMjAwNjEyMzExMjM0ICAgICAgICAyMDA2MTIzMSAgICAgICAgICAgICAgRVVSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KMDIwMDAwMDAwMDAwMDE5OTk5OTk5OTkwMDAwMjIyMjIyMjIyMjIyMjIyICAgICAgICAgICAxOTM1MDcyODIxSmFuc2VuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyVmVybWV1bGVuICAgICAgICAgICAgICAgICAgICAgICAgICBBTUggICA0NjM0M0VHICAgICAgICAgMDAwMDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KMDQwMDAwMDAwMDAwMDI5OTk5OTk5OTkwMDAwMjIyMjIyMjIyMjIyMjIyICAgICAgICAgICAgICAgMTIwMDYxMjIzMDEyMDAxMDAwMDAwMU4wMDUwMDAwMTExNDAwMDAwMDAwMDAwMDAwICAgICAgICAwMDAgICAgICAgIDAwMTA0MDM3MjEwMDAwMDIwMDYxMjEyMDAwMDAwMDAwMTAwMDAwMDAwMjYwMDAwMDAyNjAwRDAwMDAwMDAwMjYwMEQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KOTkwMDAwMDEwMDAwMDAwMDAwMDEwMDAwMDAwMDAwMDAyMDAwMDAwMDI2MDBEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0K</Data></Bestand><Email>test@test.nl</Email><Referentie>test referentie</Referentie></Verzending></request></Indienen></SOAP-ENV:Body></SOAP-ENV:Envelope>


waarop ik dus de 'verzending is leeg' foutmelding terug krijg.

Ik heb hieronder ook nog het declaratiebestand toegevoegd dat ik van vecozo ontvangen heb, waarmee ik test.

011070302T9998011         1000000000000403721004002794000000000320061201200612311234        20061231              EUR                                                                                                                                                                                                 
020000000000019999999990000222222222222222           1935072821Jansen                             2Vermeulen                          AMH   46343EG         00004                                                                                                                                                     
040000000000029999999990000222222222222222               1200612230120010000001N0050000111400000000000000        000        00104037210000020061212000000000100000000260000002600D000000002600D1                                                                                                                      
99000001000000000001000000000000200000002600D                                                                                                                                                                                                                                                                         



Weet iemand hoe je die berichten wel goed kunt versturen?
Alvast bedankt

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 08:20

Creepy

Tactical Espionage Splatterer

En bij de support van Vecozo hebben ze je doorverwezen naar ons? ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Anoniem: 258945

Ik heb het projectje weer opgepakt en ben inmiddels verder, krijg echter weer een foutmelding..

q0:VECOZO803: Geen data gevonden in de soapenvelope

Als ik de request bekijk lijkt de XMLstring toch goed meegestuurd te worden, hieronder de code...

code:
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<? 
    ini_set('display_errors', 'On'); 
    error_reporting(E_ALL);  

    include("nusoap/lib/nusoap.php");
    
    $DEBUG=true;
    
    $headers = '';
        
      $cfg_vecozoSoapUrl = "https://certificaten.vecozo.nl/webservices/cov/vz3738.asmx?WSDL";
      $cfg_vecozoCAINFO = "E:\\website\\intranet\\vecozo\\vecozo.pem";
      $cfg_vecozoSSLCERT = "E:\\website\\intranet\\vecozo\\vecozo.pem";

      $vecozo_client = new nusoap_client($cfg_vecozoSoapUrl,true);
      $vecozo_client->soap_defencoding = 'utf-8';
     
    /* credentials */
    $certdata['cainfofile'] = $cfg_vecozoCAINFO;    
    $certdata['sslcertfile'] = $cfg_vecozoSSLCERT;
    $certdata['passphrase'] = '';
    $certdata['verifypeer'] = 0;
    $certdata['verifyhost'] = 0;
    $vecozo_client->setCredentials('nouser','nopass','certificate',$certdata);
    
    /* build xml */
    $p1 =   '   <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
                xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
                  <soap:Body>
                    <ControleerInput xmlns="http://www.vektis.nl/downloads/vz37-38/v10/wsdl">
                      <Verzekerden>
                        <Verzekerde>
                          <Volgnummer>0</Volgnummer>
                          <UZOVI-Nummer>7119</UZOVI-Nummer>
                          <GeboorteDatum>1932-01-06</GeboorteDatum>
                          <Postcode>5953KG</Postcode>
                          <Huisnummer>33</Huisnummer>
                          <PeildatumVerzekering>2005-12-22</PeildatumVerzekering>
                          <SoortVerzekering>94</SoortVerzekering>
                          <NAWVerzekerdeRetourneren>true</NAWVerzekerdeRetourneren>
                        </Verzekerde>
                      </Verzekerden>
                    </ControleerInput>
                  </soap:Body>
                </soap:Envelope>';
  
echo "XMLstring = $p1<br><br>Vardump ret: ";

        $namespace ="http://www.vektis.nl/downloads/vz37-38/v10/wsdl";
        $ret = array();
        $ret = $vecozo_client->call('controleer', $p1, $namespace ,'','','','literal');

var_dump($ret); 

        $err = $vecozo_client->getError();

echo "<br><br>Error: $err<br><br>"; 

        if ($err) {
            $resultObject->result=false;
                    $resultObject->response="Invoer leidt tot ongeldig SOAP verzoek.";
                    return $resultObject;
            echo '<h2>Error</h2><pre>' . $err . '</pre>';
        }

        echo 'Request \n' . $vecozo_client->request . '/n>';

        if($DEBUG)
        {
            echo '<h2>Request</h2><p>' . htmlspecialchars($vecozo_client->request,ENT_QUOTES) . '</p>';
            echo '<h2>Response</h2><p>' . htmlspecialchars($vecozo_client->response,ENT_QUOTES) . '</p>';
        }   
        echo 'Debug \n' .$vecozo_client->debug_str . '/n';
        echo "Headers \n".$vecozo_client->getHeaders;
        $xmlheader = $vecozo_client->getHeaders();

        if($DEBUG)
        {
            echo "<br>HEADER:";
            echo htmlspecialchars($xmlheader,ENT_QUOTES); echo "<br>";
            echo "<br>DEBUG:";
            echo $vecozo_client->debug_str; echo "<br>";
        }

        $ret_verzekerden = array();
        $ret_verzekerden = $ret['Verzekerden'];
        $ret_verzekering = array();
        $ret_verzekering = $ret_verzekerden['Verzekering'];
       
        $singlearray=$multiarray=false;

        if(isset($ret_verzekering['ResultaatCodeCOV']))
            $singlearray = true;
        else
            $multiarray = true;

        if(isset($ret_verzekering))
        {
            if($multiarray) {
                $resultaatcode = $ret_verzekering[0]['ResultaatCodeCOV'];
            } else {
                $resultaatcode = $ret_verzekering['ResultaatCodeCOV'];
            }   
        } else {
            $resultaatcode = $ret_verzekerden['ResultaatcodeCOV'];
        } 
  
        if($DEBUG) {
            echo "Verzekerden resultaat=". 
            $ret_verzekerden['ResultaatcodeCOV']. "<br>";
            print_r($ret_verzekerden);
            echo "<br>";
        }
    
?>


Dit genereert de volgende output:

XMLstring = 0 7119 1932-01-06 5953KG 33 2005-12-22 94 true

Vardump ret: array(3) { ["faultcode"]=> string(12) "q0:VECOZO803" ["faultstring"]=> string(37) "Geen data gevonden in de soapenvelope" ["detail"]=> string(0) "" }

Error: q0:VECOZO803: Geen data gevonden in de soapenvelope

Waarom is de soapenvelope leeg?

Verder gaat er nog iets mis met het laten zien van de data.. Ook al staat $DEBUG op true, dan nog zie ik geen data op mn scherm... Heeft iemand hier een oplossing voor?

[ Voor 3% gewijzigd door Anoniem: 258945 op 06-11-2008 17:05 ]


Acties:
  • 0 Henk 'm!

Anoniem: 290466

Hoi, hier een update met dank aan Joshua aka Snaak1979.

Ik zat nl, met hetzelfde probleem als Xavier in de post hierboven.

In Xaviers code moet je de soap:Envelope en soap:Body halen uit regels 27 tot 30 en 45+46

zodat het dit wordt:

code:
1
2
3
4
5
6
7
8
9
10
11
12
    $p1 =     '<ControleerInput xmlns="http://www.vektis.nl/downloads/vz37-38/v10/wsdl">
                      <Verzekerden>
                        <Verzekerde>
                          <Volgnummer>0</Volgnummer>
                          <GeboorteDatum>1950-01-01</GeboorteDatum>
                          <Achternaam>Oeverloos</Achternaam>
                          <PeildatumVerzekering>2009-02-02</PeildatumVerzekering>
                          <SoortVerzekering>92</SoortVerzekering>
                          <NAWVerzekerdeRetourneren>1</NAWVerzekerdeRetourneren>
                        </Verzekerde>
                      </Verzekerden>
                    </ControleerInput>';


Dan werkt het iig voor mij.

LET OP!
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 :)
3) NAWVerzerkdeRetourneren mag 1 of true

succes en nogmaals dank aan Joshua voor het meeste werk!

Acties:
  • 0 Henk 'm!

Anoniem: 316525

@Joshua (snaak1979) Ik heb een zelfde probleem om een webapplicatie applicatie met Vecozo te laten draaien php - nuSOAP knip


Dit is niet de bedoeling hier. Discussieren kan via het forum. Anders neem je gewoon zelf contact met de betreffende persoon op.

[ Voor 43% gewijzigd door Woy op 01-09-2009 16:43 ]

Pagina: 1