Je vais développer une extension firefox qui rendra XMLHttpRequest à this WebService.XMLHttpRequest sur SSL à partir de l'extension Firefox
Je peux interroger correctement le service avec le code suivant (des overlay.js):
var req = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:dat=\"http://webservice.whereisnow.com/datatypes\"><soapenv:Header/><soapenv:Body><dat:CurrentDocument><dat:applicationId>1</dat:applicationId><dat:publisherId>84</dat:publisherId><dat:documentId>8</dat:documentId><dat:versionId>1</dat:versionId></dat:CurrentDocument></soapenv:Body></soapenv:Envelope>";
var xmlhttpreq = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(Components.interfaces.nsIXMLHttpRequest);
xmlhttpreq.open("POST","https://www.whereisnow.com/webservice",false); // false = async
xmlhttpreq.channel.loadFlags |= Components.interfaces.nsIRequest.LOAD_BYPASS_CACHE;
xmlhttpreq.send(req);
if (xmlhttpreq.readyState == 4){
if(xmlhttpreq.status == 200)
alert(xmlhttpreq.responseText);
else
alert("Error: xmlhttpreq.status = " + xmlhttpreq.status)
}
else
alert("Not ready: xmlHttpreq.readyState = " + xmlHttpreq.readyState);
Le responseText sera un xml valide que je peux manipuler, mais le WebService peut être consulté à la fois via http et https (SSL), et je DOIS le faire sur https parce que l'authentification est nécessaire pour faire certaines choses.
Afin d'accéder via https je DOIS modifier le point final en utilisant https: // au lieu de http: // et le xml demande ainsi:
var req = "<soapenv:Envelope xmlns:dat=\"http://webservice.whereisnow.com/datatypes\" xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"><soapenv:Header><wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\"><wsse:UsernameToken wsu:Id=\"UsernameToken-1\" xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\"><wsse:Username>MY_USERNAME</wsse:Username><wsse:Password Type=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText\">SHA1_OF_MY_PASSWORD</wsse:Password></wsse:UsernameToken></wsse:Security></soapenv:Header><soapenv:Body><dat:CurrentDocument><dat:applicationId>1</dat:applicationId><dat:publisherId>84</dat:publisherId><dat:documentId>10</dat:documentId><dat:versionId>1</dat:versionId></dat:CurrentDocument></soapenv:Body></soapenv:Envelope>";
Le problème est que l'état du serveur est toujours 500 et le responseText est toujours ceci:
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><soapenv:Fault><faultcode>soapenv:Server</faultcode><faultstring>InvalidSecurity</faultstring><detail></detail></soapenv:Fault></soapenv:Body></soapenv:Envelope>
Une aide?
EDIT
Avec le code trouvé à this url j'ai découvert que le certificat SSL du service fonctionne correctement. Je pense donc que le problème est pas https ...