Envoyé par : Romz
Date : 18/07/2006 16:01
Bonjour,
J'ai suivis le tutorial Socket sur xulplanet, mais impossible de le faire fonctionner.
socket.html:
<script src="socket.js" type="text/javascript"></script> <form action=# name=f> <input type="button" value="Hop" onClick="getPageContent();"> </form>
socket.js (l'ip du proxy est intentionnellement cachée):
function getPageContent() { var listener = { finished : function(data){ dump(data); } } readAllFromSocket("www.mozilla.org",80,"GET / HTTP/1.0\n\n",listener); } function readAllFromSocket(host,port,outputData,listener) { try { document.write('Debug: starting<br>'); netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); var proxyService = Components.classes["@mozilla.org/network/protocol-proxy-service;1"] .getService(Components.interfaces.nsIProtocolProxyService); var proxyInfo = proxyService.newProxyInfo("http", "10.1.*.*", 3128 , 0 , 6 , null ); var transportService = Components.classes["@mozilla.org/network/socket-transport-service;1"] .getService(Components.interfaces.nsISocketTransportService); var transport = transportService.createTransport(null,0,host,port,proxyInfo); var stream = transport.openInputStream(0,0,0); var instream = Components.classes["@mozilla.org/scriptableinputstream;1"] .createInstance(Components.interfaces.nsIScriptableInputStream); instream.init(stream); var outstream = transport.openOutputStream(0,0,0); outstream.write(outputData,outputData.length); var dataListener = { data : "", onStartRequest: function(request, context){document.write('Debug: onstart<br>');}, onStopRequest: function(request, context, status){ document.write('Debug: onstop<br>'); instream.close(); outstream.close(); listener.finished(this.data); }, onDataAvailable: function(request, context, inputStream, offset, count){ document.write('Debug: ondataAvailable<br>'); this.data += instream.read(count); }, }; var pump = Components. classes["@mozilla.org/network/input-stream-pump;1"]. createInstance(Components.interfaces.nsIInputStreamPump); pump.init(stream, -1, -1, 0, 0, false); pump.asyncRead(dataListener,null); document.write('Debug: ending<br>'); } catch (ex){ document.write("Error: " + ex.name + ", msg: " + ex.message); return ex; } return null; }
Premierement au lancement j'ai le droit a une fenetre affichant :
A script from "file://" is requesting enhanced abilities that are >UNSAFE and could be used to compromise your machine or data:
Run or install software on your machine>
Allow these abilities only if you trust this source to be free of >viruses or malicious programs.
Remember this decision
Allow Deny
Ensuite j'ai donc dans la page, apres avoir appuyé sur le bouton :
Debug: starting
Debug: ending
Debug: onstart
Debug: ondataavailable
Debug: onstop
Et la page continue d'essayer de se charger (cuseur en sablier, possibilité de faire stop).
Derniere chose, dans la console javascript :
Error: Exception... "'Permission denied to create wrapper for object of class UnnamedClass' when calling method: nsIStreamListener::onStopRequest" nsresult: "0x8057001e (NS_ERROR_XPC_JS_THREW_STRING)" location: "<unknown>" data: no
Donc mes questions : pourquoi ce message au debut ? Comment faire en sorte que ca n'arrive pas (sans avoir a cocher "ne plus me demander ...") ?
Qu'est ce qui ne vas pas dans le code ? D'ou vient l'exception ?
Il n'est plus possible de poster des messages dans ce forum.
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.