IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flex Discussion :

HTTPService : requête HTTP envoyée vide


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Envoi de XML par HTTPService
    Bonjour,

    Je travaille sur un projet d'applications Web. Actuellement le client est en HTML + Javascript, et communique de façon asynchrone en AJAX avec le serveur

    Je dois développer un client Flex communiquant de la même façon :
    - envoi d'une requête HTTP au format XML
    - réception de la réponse au format XML

    Quelle est la façon la plus simple de faire ceci ? J'ai essayé d'utiliser le composant HTTPService, sans parvenir à formuler ma requête XML.

    D'autre part, peut-on débugger de façon à analyser les requêtes HTTP entrantes et sortantes ?

    Merci.
    Dernière modification par Invité ; 24/11/2007 à 14h01.

  2. #2
    Membre Expert Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Par défaut
    exemple pour le chargement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    import flash.events.Event;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
     
    var externalXML:XML;
    var loader:URLLoader = new URLLoader();
    var request:URLRequest = new URLRequest("xmlFile.xml");
    loader.load(request);
    loader.addEventListener(Event.COMPLETE, onComplete);
     
    function onComplete(event:Event):void
    {
        var loader:URLLoader = event.target as URLLoader;
        if (loader != null)
        {
            externalXML = new XML(loader.data);
            trace(externalXML.toXMLString());
        }
        else
        {
            trace("loader is not a URLLoader!");
        }
    }
    -HTTPAnalyzer

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci. Même si je pense ne pas pouvoir utiliser URLLoader dans le cas précis, ça m'a aidé à pondre ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    import mx.rpc.events.ResultEvent; 
    import mx.rpc.http.HTTPService; 
     
    public var actionOpen : HTTPService; 
     
    public function init() : void { 
       initActionOpen(); 
    } 
     
    private function initActionOpen() : void { 
     
       var request : XML = 
          <request screen-name="EMPLOYEE" screen-id="0" action="open"> 
          </request> 
     
       actionOpen = new HTTPService(); 
       actionOpen.contentType = HTTPService.CONTENT_TYPE_XML; 
       actionOpen.method = "POST"; 
       actionOpen.request = request; 
       actionOpen.resultFormat = HTTPService.RESULT_FORMAT_E4X; 
       actionOpen.url = "http://.../TelosysBookStore/action"; 
       actionOpen.addEventListener(ResultEvent.RESULT, responseActionOpen); 
    } 
     
    public function responseActionOpen(evt : ResultEvent) : void { 
       mx.controls.Alert.show(evt.result.toString()); 
    }
    Réponse du serveur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <response screen-name="" screen-id="" action=""> 
       <return code="-1" message="HTTP GET method is not supported ! "/> 
    </response>

  4. #4
    Invité
    Invité(e)
    Par défaut
    A force de me battre, sans succès, avec l'objet HTTPService, j'ai décidé de simplifier au maximum mon script, et de placer un écouteur sur une page PHP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
     
    	<mx:HTTPService id="action" url="http://localhost/request.php" method="POST"> 
    	</mx:HTTPService>
     
    	<mx:Button id="bouton" label="Bouton" click="action.send(bouton.label);"/>
     
    </mx:Application>
    Résultat : la page PHP est bien accédée, mais aucune information n'est envoyée dans le POST ! Curieux, non ?

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2002
    Messages : 744

  6. #6
    Invité
    Invité(e)
    Par défaut
    Merci pour les suggestions. Finalement j'ai remplacé mon écouteur PHP par un petit programme Java plus adapté.

    Le problème vient donc de la requête HTTP. J'ai testé pas mal de combinaisons (content type + request), sans jamais parvenir à envoyer du XML brut (en l'occurence <request />) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import mx.rpc.http.HTTPService;
     
    public function request(): void {
     
    	var action: HTTPService = new HTTPService();
    	action.url = "http://localhost:8081/";
    	action.method = "POST";
    	action.contentType = HTTPService.CONTENT_TYPE_XML;
    	action.request = new XML(<request/>);
    	action.send();
    }


    Pourtant la documentation est très claire au sujet de la propriété HTTPService.request :
    Object of name-value pairs used as parameters to the URL. If the contentType property is set to application/xml, it should be an XML document.
    Curieux !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Envoyer requête HTTP
    Par Arnaud F. dans le forum Développement Web en Java
    Réponses: 9
    Dernier message: 08/01/2009, 20h45
  2. Envoyer une requête http au serveur
    Par soso78 dans le forum VBScript
    Réponses: 2
    Dernier message: 08/10/2008, 10h54
  3. [Réseau] envoyer une requête http POST
    Par rich25200 dans le forum Langage
    Réponses: 3
    Dernier message: 31/01/2008, 23h15
  4. Envoyer une requête HTTP
    Par Alexdezark dans le forum Langage
    Réponses: 2
    Dernier message: 24/11/2007, 16h11
  5. Envoyer une requête http et recevoir la réponse XML
    Par jlscvdb dans le forum Delphi .NET
    Réponses: 1
    Dernier message: 26/02/2007, 17h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo