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.