En fait, le code dans la réponse acceptée n'a pas fonctionné pour moi. Je l'ai donc modifié un peu pour qu'il renvoie effectivement une chaîne de caractères et qu'il ferme tout de manière élégante après l'exécution. L'exemple renvoie les données récupérées sous forme de chaîne UTF8, il fonctionnera donc aussi bien pour les pages ASCII que pour les pages UTF8.
uses WinInet;
function GetUrlContent(const Url: string): UTF8String;
var
NetHandle: HINTERNET;
UrlHandle: HINTERNET;
Buffer: array[0..1023] of byte;
BytesRead: dWord;
StrBuffer: UTF8String;
begin
Result := '';
NetHandle := InternetOpen('Delphi 2009', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
if Assigned(NetHandle) then
try
UrlHandle := InternetOpenUrl(NetHandle, PChar(Url), nil, 0, INTERNET_FLAG_RELOAD, 0);
if Assigned(UrlHandle) then
try
repeat
InternetReadFile(UrlHandle, @Buffer, SizeOf(Buffer), BytesRead);
SetString(StrBuffer, PAnsiChar(@Buffer[0]), BytesRead);
Result := Result + StrBuffer;
until BytesRead = 0;
finally
InternetCloseHandle(UrlHandle);
end
else
raise Exception.CreateFmt('Cannot open URL %s', [Url]);
finally
InternetCloseHandle(NetHandle);
end
else
raise Exception.Create('Unable to initialize Wininet');
end;
J'espère que cela aidera quelqu'un qui, comme moi, cherchait un code simple pour récupérer le contenu d'une page en Delphi. Merci, Aldis :)
0 votes
Pensez-vous que l'utilisation de HTTP GET est suffisante pour invoquer une fonction de webservice ?
0 votes
Il l'est s'il s'agit d'un service web RESTful.
0 votes
Je ne savais pas que REST pouvait aussi avoir un wsdl
0 votes
AhmetCiftci, comme je l'ai déjà dit, le service dispose d'une url "HTTP GET" pour l'appeler, on peut donc utiliser le WSDL ou simplement demander "HTTP GET"