Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# SOAP - not well formed - http/1.1 200 OK------

Envoyé par : David64

Date : 21/03/2007 17:39

Bonjour à tous,

je développe une appli standalone avec xulrunner qui se base sur des infos tirées d'une base de données MySQL 5. J'utilise pour cela un seveur SOAP écrit en PHP 5 (avec apache 2; le tout tournant sur la meme machine sous winXPPro).

Symptômes : L'appplication envoie des requetes soap au serveur qui gentillement s'empresse de répondre. L'appli instancie tout ce dont elle a besoin en fonction de ces données. Cela se produit plusieurs fois au lancement de l'appli jusqu'à mettre à jour l'IU et à donner la main à l'utilisateur. On peut ajouter des données dans la BD avec cette appli. Tout marche très bien. Sauf que si on ferme et qu'on relance l'appli, un message d'erreur dans la console JavaScript vient casser l'ambiance :

Error: not well-formed
Source File: http://127.0.0.1/services/server.php
Line: 2, Column: 5
Source Code:
HTTP/1.1 200 OK----^

La ligne et le num ne correspondent à rien dans serveur.php (que du commentaire au début bien audela de 5 lignes; je sais que le parseur php zappe les commentaires mais, abstraction faite des ces commentaires, la 5 ligne correspond à une affectation de variable...)

Diagnostic : Très difficile de comprendre d'où ça viens. Un indice : au début, quand peut de données sont à charger, tout marche très bien. Puis au bout d'un moment, ça marche plus (j'ai ajouté un élément de la bd puis relancé aussitot l'appli jusqu'a reproduire le pb).

Je suis convaincu que je passe à côté d'une énorme erreur de ma part. Sauf que cela fait trop longtemps que je cherche en vain et je me permet donc de lancer un appel à l'aide !

Merci d'avance pour vos lumières David

# Re: SOAP - not well formed - http/1.1 200 OK------

Envoyé par : Christophe Charron

Date : 21/03/2007 17:54

Rien dans le php error log ?

# Re: SOAP - not well formed - http/1.1 200 OK------

Envoyé par : David64

Date : 22/03/2007 08:54

Non Christophe, aucune erreur. En effet, ce qui est troublant, c'est que le service (serveur.php) fonctionne sans problème avec peu de données (impossible d'être précis sur ce point tout de suite car impossible de capturer les paquets transitant sur l'interface locale sous win xp; si vous avez une idée... un proxy sur la meme machine ? un autre pilote winpcap ?).

Je n'exclu pas l'erreur au niveau serveur pour autant (pas la logique métier, mais la configuration de SOAP, PHP). J'ai aussi testée une par une les fonction dans mon script. Je charge séquentiellement différent types de données qui me permettent d'instancier des objets JavaScript. Lorsque je squeeze la partie qui va pas, le problème est reporté sur le chargement suivant. Aussi, j'arrive à créer le problème "à la main". En effet, quand je "gonfle" petit à petit le contenu des tables interrogées de ma bd et en relançant régulièrement mon appli, j'arrive à créer le problème.

Une taille de message à ne pas dépasser avec SOAP?

# Re: SOAP - not well formed - http/1.1 200 OK------

Envoyé par : rldhont

Date : 22/03/2007 11:05

Utilises tu les objets SOAP ou WSDL (SOAPCall, ou WebServiceProxyFactory) de Mozilla pour communiquer avec ton serveur ?

# Re: SOAP - not well formed - http/1.1 200 OK------

Envoyé par : David64

Date : 22/03/2007 11:15

J'utilise, je pense, les objets SOAP. J'ai suivi cette procédure : api soap (Côté serveur, avec PHP, je n'utilise pas WSDL donc bon...).

# Re: SOAP - not well formed - http/1.1 200 OK------

Envoyé par : rldhont

Date : 22/03/2007 11:21

Ce que je ne comprends pas c'est à quel moment dans ta communication avec ton serveur tu as l'erreur.

Apparemment tu utilises un soapcall. Utilises-tu invoke ou asyncInvoke ? Lorsque tu as l'erreur reçois tu quand même un résultat SOAP ou est-ce avant ? Soit as tu tout de même un objet SOAPResponse ?

# Re: SOAP - not well formed - http/1.1 200 OK------

Envoyé par : David64

Date : 22/03/2007 12:04

j'utilise asyncInvoke. La fonction appelle le service aves les paramètres qui vont bien (en l'occurence, il n'y a pas de paramètres). A ce moment là, affichage de l'erreur JavaScript

Error: not well-formed
Source File: http://127.0.0.1/services/server.php
Line: 2, Column: 5
Source Code:
HTTP/1.1 200 OK----^

dans la console JS et blocage temporaire sur le asyncInvoke. Reprise soudaine de l'exécution. Pas d'erreur SOAP dans handleSOAPResponse(). En revanche quand je veux récupérer les données :

function parseResult(result){
   dump(result);
   if (result == false){
        return;
   }
   var num = new Object();
   var params = result.getParameters(false,num);
}

params [ 0 \] ne contient rien !

J'ai mis un test qui évite de faire planter l'appli dans le cas ou rien n'est retourné mais j'ai la première erreur javascript qui est levée :-(.

Soit as tu tout de même un objet SOAPResponse ?

La fonction parseResult est donc appelée et le dump me retourne : xpconnect wrapped (nsISupports, nsISOAPM(..)

Une chose de bizarre : Il me semble que la requete précédente influe sur la suivante. Pourtant, je ne déclenche pas une nouvelle requete sans avoir recu et traité la précédente. Si je bypass la requete qui soit-disant "plante", c'est la suivante qui plantera. Si je diminue la quantité d'info à la main dans la bd servant à faire la requete qui serait alors en cause, tout marche bien !

# Re: SOAP - not well formed - http/1.1 200 OK------

Envoyé par : rldhont

Date : 22/03/2007 14:39

Je pense que tu as une erreur au niveau de ton serveur.

Il serait intéressant de vérifier la combientième requête entraine une erreur mais aussi de tester avec un setTimeout ou en synchrone pour vérifier si en fait ton serveur ne supporte pas la charge.

# Re: SOAP - not well formed - http/1.1 200 OK------

Envoyé par : David64

Date : 22/03/2007 15:15

HOULA ! Problème aléatoire ! Ca a marché une fois depuis ce matin ! J'ai rajouté des trigger_error pour débugger le serveur php et ca a marché direct après (malgré l'affichage du meme message d'erreur dans la console JavaScript). Puis j'ai relancé l'appli et puis comme avant. Et ca reste comme avant.

Je penche aussi en faveur d'un problème serveur. J'ai mis à chaque début et fin de fonction de traitement du service un trigger ainsi que dans les boucles de données pour voir ce qui se passait. Tout est correct. Les réponses provenant de la BD sont correctes. Bon, d'accord. Mais que se passe-t-il après ,quand je fait appel à la méthode handle() de mon service web PHP SOAP ?

Un résumé de mon service Web :

$server = new SoapServer(NULL, array("uri" => "http://127.0.0.1/services/"));

// Je défini ici chacun de mes services en implémentant autant de fonctions php

// j'ajoute ces fonctions au serveur
$server->addFunction(array("echoString","echoString"));

// je traite la requete
if ($_SERVER["REQUEST_METHOD"] == "POST") {
   $server->handle();
}
else{
   echo "Ce serveur SOAP peut gérer les fonctions suivantes : ";
   $functions = $server->getFunctions();
   foreach($functions as $func) {
      echo "<li>".$func."</li>";
   }
}

Je tient à signaler que mes requetes sont au nombre de 10 avec pour chacune 20 lignes de résultats composés d'au maximum 10 champs avec au maximum 16 à 32 caractères. Je renvoi directement un tableau contenant chaque ligne résultat de ma requete sql "fetché" en object.

Transformé en message SOAP, est-ce si terrible ???

# Re: SOAP - not well formed - http/1.1 200 OK------

Envoyé par : David64

Date : 22/03/2007 16:55

Mon script PHP / service SOAP est incorrect ?

# Re: SOAP - not well formed - http/1.1 200 OK------

Envoyé par : rldhont

Date : 23/03/2007 09:03

Désolé mais, je ne fais pas de php...

# Re: SOAP - not well formed - http/1.1 200 OK------

Envoyé par : David64

Date : 23/03/2007 09:39

Je te remercie pour ton aide rldhont.

Quelqu'un peut valider mon service Web SOAP en php ? Merci d'avance

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.