[SOAP SERVER] Fournir des fichiers en réponse (.html, .js, .css)
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:
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 :
Citation:
<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 ^^