Forums Développement Multimédia

Aller au contenu

En-tête d'une réponse

as3 HTTP Headers CODE Actionscript

6 réponses à ce sujet

#1 deuxsucres

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 115 messages

Posté 23 February 2012 - 11:56 AM

Bonjour,

Est-il possible de lire les en-têtes de la réponse du serveur avec les objets de chargement de données tels que URLLoader ou Loader ?

Merci.

#2 Galacta

    Etudiant Ingénieur

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 689 messages

Posté 23 February 2012 - 12:14 PM

Salut,

Si tu utilises URLLoader et dataFormat = URLLoaderDataFormat.TEXT normalement oui tu peux

Morgan
Word hard, play hard.

#3 Goabonga

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2724 messages

Posté 23 February 2012 - 13:05 PM

Si on parle des headers http on ne peut pas en mode web ( uniquement le status )

package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.HTTPStatusEvent;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;

public class App extends Sprite
{
  private var _urlLoader:URLLoader;
  private var _request:URLRequest = new URLRequest('http://goabonga.fr/logo.png');
  public function App()
  {
 
   _urlLoader = new URLLoader();
   _urlLoader.addEventListener(Event.COMPLETE,handleLoaderComplete);
   _urlLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS,handleLoaderStatus);
   _urlLoader.load(_request);
  }
 
  protected function handleLoaderStatus(event:HTTPStatusEvent):void
  {
   trace(this,'handleStatus',event);
   trace(event.status);
  }
 
  protected function handleLoaderComplete(event:Event):void
  {
   trace(this,'handleLoaderComplete',event);
   trace(_urlLoader.data);
  }
 
}
}
 

par contre dans Air le flash.events.HTTPStatusEvent.HTTP_RESPONSE_STATUS retourne un tableau responseHeaders .

@+

#4 frangois

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 224 messages

Posté 23 February 2012 - 14:02 PM

C'est possible mais pas directement en utilisant l'API Flash de base via URLLoader, il suffit de réimplémenter HTTP en utilisant les sockets : http://code.google.c.../as3httpclient/ contient un HTTPURLLoader qui est un très bon point de départ pour ça.

Ca marche aussi pour faire du RESTful en Actionscript (implémenter les headers POST/GET/PUT/DELETE).
Je suis dispo en free-lance. Et j'ai un blog.

#5 deuxsucres

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 115 messages

Posté 23 February 2012 - 14:44 PM

Merci pour vos réponse.

Donc de base, sans utiliser AIR ni une autre librairie, le FlashPlayer permet pas de lire les headers de la réponse.
Car j'en ai besoin autant pour charger du texte que du binaire (Bitmap, SWF, MP3...)

#6 Goabonga

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2724 messages

Posté 23 February 2012 - 19:13 PM

Tu veux les en-tête http ? ou les en-tête des fichiers ?
Pour les fichier tu peux le faire avec un URLLoader !
Pour les en-tête http tu passe pas une connection socket comme te le conseil Frangois ( donc pas un URLLoader ni meme un Loader, car ce n'est pas possible avec ces 2 class .... ) !

au plus simple :

package
{
  import flash.display.Sprite;
  import flash.errors.EOFError;
  import flash.events.Event;
  import flash.events.OutputProgressEvent;
  import flash.events.ProgressEvent;
  import flash.net.Socket;
  import flash.utils.ByteArray;

  public class App extends Sprite
  {
   private var _socket:Socket;
 
   public function App()
   {
        _socket = new Socket();
        _socket.addEventListener(Event.CONNECT,handleSocketConnect);
        _socket.addEventListener(Event.CLOSE,haandleSocketClose);
        _socket.addEventListener(ProgressEvent.SOCKET_DATA,handleSocketData);
        _socket.connect('127.0.0.1',80);
   }
 
   protected function haandleSocketClose(event:Event):void
   {
        trace(this,'handleSocketClose',event);  
   }
 
   protected function handleSocketConnect(event:Event):void
   {
        trace(this,'handleSocketConnect',event);
        var requete:String;
        requete = "HEAD /index.php HTTP/1.0\r\n";
        _socket.writeUTFBytes(requete+"\r\n");
        _socket.flush();
   }
 
   protected function handleSocketData(event:ProgressEvent):void
   {
        trace(this,'handleSocketData',event);
        trace(_socket.readUTFBytes(_socket.bytesAvailable));
   }
 
  }
}
 


#7 deuxsucres

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 115 messages

Posté 24 February 2012 - 14:22 PM

Je veux les entêtes HTTP de la réponse HTTP.

OK, ce n'est donc pas possible avec les classes Loader et URLLoder.

Merci pour vos réponses.



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)