Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Outils > XMLRAD
XMLRAD Environnement de développement Web XML/XSL. Avant de poster -> F.A.Q XMLRAD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/03/2003, 19h04   #1
Nouveau Membre du Club
 
Inscription : novembre 2002
Messages : 92
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 92
Points : 25
Points : 25
Par défaut Ne pas formater une erreur

Bonjour,

J'ai écrit du code en Delphi dans l'événement BeforeXMLService, lorsque ce code génère une Exception j'obtiens une page formatée par XMLRad "Une erreur est intervenue, elle est detaillée ci-dessous ...", comment faire pour avoir une vrai page d'erreur car j'ai une application qui appelle cette fonction et qui teste le résultat de l'exécution or si ce code génère une erreur je dois récupérer un code 404 et pas la page formatée.

Merci.
Sylvain Leray est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2003, 20h30   #2
Membre éclairé
 
Inscription : janvier 2003
Messages : 284
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 284
Points : 311
Points : 311
Envoyer un message via MSN à Nicolas.Cogi
Par défaut Exception récupérée en XML

Est-ce que tu ne préféres pas récupérer plutôt du XML ?
Si c'est le cas, tu peux ajouter ce champ dans le Context en cas d'exception :

Code :
1
2
3
4
5
6
 
  try
    ... // Code pouvant générer une exception
  except
    Context.Values['XMLC_OutputFormat'] := 'XML';
  end;
Ca te permettra de récupérer l'erreur au format XML, mais le header de la réponse HTTP indiquera toujours 200 (success) et non 404 (not found)...
En l'occurence, l'action a bien été trouvée et la DLL a répondu, signe que ce n'est pas une erreur HTTP, mais une erreur applicative. Le status code 200 est donc approprié ici.

Je ne crois pas que le Framework permette de jouer avec le status code http retourné au client. Si quelqu'un a une idée à ce sujet...

Pour gérer l'exception depuis ton application cliente, tu peux utiliser XMLCursor, comme suit :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
  uses
    STDXML_TLB, XMLCursor, 
    XMLHTTP; // pour avoir accès à SimplePost
...
 
var
  Cursor: IXMLCursor;
  ExceptionMsg: WideString;
  Response: WideString;
begin
  Response := SimplePost(URL);
  Cursor := TXMLCursor.Create;
  try
    Cursor.LoadXML(Response);
    ExceptionMsg := Cursor.GetValue('/document/XMLC_Params/XMLC_Exception');
  except
    // Reponse pas compatible XML, donc pas une erreur à priori
    Abort;
  end;
  if ExceptionMsg <> '' then
    raise Exception.Create('erreur pour joindre le serveur : ' + ExceptionMsg);
end;
Tu récupères ainsi le message d'exception levé par le serveur directement sur ton poste client. Attention si la réponse n'est pas du XML, XMLCursor lève dans ce cas lui-même une exception (d'où le Abort après le LoadXML).

Dans les options du projet, il faut cocher "Assignable Typed Constant" à l'onglet "Compiler".

Attention ! On ne fait pas de Free sur un XMLCursor : ca fonctionne avec des compteurs de références, donc pas de probleme de libération de ce coté là. (pas de .Free parce que XMLCursor est un pointeur sur un objet du DOM détenu par le parser XML).

Peut-être que ca répond à ta question ou que ca te permet de voir le probleme sous un angle différent ?

Bonne soirée
__________________
Nicolas
Nicolas.Cogi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2003, 14h13   #3
Membre éclairé
 
Inscription : janvier 2003
Messages : 284
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 284
Points : 311
Points : 311
Envoyer un message via MSN à Nicolas.Cogi
Par défaut exeption au format SOAP

Pour info, on peut aussi passer dans le Context

Code :
Context.Values['XMLC_OutputFormat'] := 'SOAP';
Ca renvoie l'exception dans une grappe XML compatible SOAP :

Code :
1
2
3
4
5
6
7
8
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  <SOAP-ENV:Body>
    <SOAP-ENV:Fault>
      <SOAP-ENV:faultcode>SOAP-ENV:Server</SOAP-ENV:faultcode> 
      <SOAP-ENV:faultstring>Component "Test" not found.</SOAP-ENV:faultstring> 
    </SOAP-ENV:Fault>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Le message d'exception se trouve alors dans /Envelope/Body/Fault/faultstring
__________________
Nicolas
Nicolas.Cogi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h44.


 
 
 
 
Partenaires

Hébergement Web