Bonjour,

j'avais commencé un WebService (isapi) sous delphi 2007 que j'ai intégré finalement dans une application stand alone SoapServer avec Delphi XE.

j'appelle le service depuis une page web et un objet javascript XmlHttpRequest.
en ISAPI, pas de problèmes, le serveur me renvoie mes pages et l'isapi traite mes demandes. Mais deux points noirs se présentent à moi maintenant :

1. IIS ne me distribue plus que mes pages web... un peu lourd pour des pages statiques.
2. XMLHttpRequest ne peut faire de requêtes cross-domain (par exemple localhost/monscript.js ne peut faire une demande à mon serveur soap en localhost:8080/ )

j'aimerais donc que mon service soap puisse répondre à une demande de page (localhost:8080/index.htm ou monscript.js)

est-ce seulement possible ?

j'arrive à traiter une demande de page spécifique grâces aux "Actions" du TWebModule, mais quand je renvoie mon fichier de cette manière :

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
 
procedure TWMMonService.WMMonServiceGetFileAction(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
  fichier : TFileStream;
begin
  if(FileExists(vars.initDir+Request.PathInfo))then
  begin
    try
      fichier := TFileStream.Create(vars.initDir+Request.PathInfo, fmOpenRead or fmShareDenyWrite);
      Response.SendStream(fichier);
      Response.SendResponse;
      Handled:=True;
    finally
      FreeAndNil(fichier);
    end;
  end else
    Trace('fichier '+vars.initDir+Request.PathInfo+' inexistant');
end;
mon navigateur m'affiche bien le résultat mais avec un petit plus :

<html>
... ma page web ... <- ça c'est bon ^^
</html>
HTTP/1.1 200 OK
Connection: close
Content-Type: text/html; charset=ISO-8859-1
Content-Length: 0

<HTML><BODY><B>200 OK</B></BODY></HTML>
je n'en suis pas loin, mais les informations du SOAP me plantent mes .js ^^

je dois certainement passer par un autre objet, ou alors utiliser autre chose que Response.SendStream mais je pêche totalement...

un petit coup de pouce serait le bienvenu ^^