Forums : XPCom

Aller à la discussion :  Plus récente Plus ancienne

# Exemple XULPlanet : Socket impossible a faire fonctionner

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.