Ik ben bezig met het aanspreken van een webservice van een klant van ons. Deze webservice zit op een https verbinding met een geldig certificaat. Echter, de testomgeving van de webservice zit ook achter https maar met een self-signed certificaat (dus eigenlijk gewoon geen echt certificaat).
Mijn probleem is nu het volgende:
Als test heb ik een JScript scriptje waarmee in de webservice kan aanspreken:
Dit werkt prima...
Nu wil ik deze code omzetten naar onze C++ applicatie waarbij ik gebruik maak van een IE object. Het probleem zit hem echter in deze regel:
ik krijg deze code niet in de C++ verwerkt, waardoor door de unsigned-heid van het certificaat de boel niet werkt.
Mijn C++ code:
de setOption functie geeft hier als error:
hoe krijg ik nu voor elkaar dat ik de certificaat error kan negeren?
Mijn probleem is nu het volgende:
Als test heb ik een JScript scriptje waarmee in de webservice kan aanspreken:
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
| var ParFile = WScript.Arguments.Item(0); var objFile = new ActiveXObject("Scripting.FileSystemObject"); var xmlFile = objFile.OpenTextFile(ParFile); var xmlDoc = xmlFile.ReadAll(); var xmlHttp = null; try { // IE7+, Firefox, Opera 8.0+, Safari... xmlHttp= new XMLHttpRequest(); } catch(ex) { // Internet Explorer... try { xmlHttp= new ActiveXObject('Msxml2.XMLHTTP'); } catch(ex) { xmlHttp= new ActiveXObject('Microsoft.XMLHTTP'); } } xmlHttp.setOption(2, 13056); // NOTE: 13056 = SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS xmlHttp.open("POST", "https://webserviceurl",false, "username", "password"); xmlHttp.setRequestHeader("Content-Type", "application/soap+xml"); xmlHttp.send(xmlDoc); while (xmlHttp.readyState != 4) { xmlHttp.waitForResponse(1000); } WScript.echo(xmlHttp.getAllResponseHeaders()); WScript.echo(xmlHttp.responseXML.xml); WScript.echo(xmlHttp.responseText); |
Dit werkt prima...
Nu wil ik deze code omzetten naar onze C++ applicatie waarbij ik gebruik maak van een IE object. Het probleem zit hem echter in deze regel:
code:
1
| xmlHttp.setOption(2, 13056); // NOTE: 13056 = SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS |
ik krijg deze code niet in de C++ verwerkt, waardoor door de unsigned-heid van het certificaat de boel niet werkt.
Mijn C++ code:
C++:
1
2
3
4
5
| Variant XmlHttp = Variant::CreateObject("Microsoft.XMLHTTP"); XmlHttp.OleFunction("Open","POST",WideString(PostURL),false, UserName, PassWord); XmlHttp.OleFunction("setOption", "2", 13056); XmlHttp.OleFunction("setRequestHeader","Content-Type","application/soap+xml"); XmlHttp.OleFunction("send", WideString(xmlstring)); |
de setOption functie geeft hier als error:
code:
1
| Project test.exe raised exception class EOleSysError with message 'Onbekende naam'. Process stopped. |
hoe krijg ik nu voor elkaar dat ik de certificaat error kan negeren?