J'essaie d'effectuer des requêtes HTTP à partir de Delphi en utilisant les fonctions WinInet.Comment envoyer une requête HTTP POST dans Delphi à l'aide de WinInet api
Jusqu'à présent, j'ai:
function request:string;
var
hNet,hURL,hRequest: HINTERNET;
begin
hNet := InternetOpen(PChar('User Agent'),INTERNET_OPEN_TYPE_PRECONFIG or INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
if Assigned(hNet) then
begin
try
hURL := InternetConnect(hNet,PChar('http://example.com'),INTERNET_DEFAULT_HTTP_PORT,nil,nil,INTERNET_SERVICE_HTTP,0,DWORD(0));
if(hURL<>nil) then
hRequest := HttpOpenRequest(hURL, 'POST', PChar('param=value'),'HTTP/1.0',PChar(''), nil, INTERNET_FLAG_RELOAD or INTERNET_FLAG_PRAGMA_NOCACHE,0);
if(hRequest<>nil) then
HttpSendRequest(hRequest, nil, 0, nil, 0);
InternetCloseHandle(hNet);
except
on E : Exception do
ShowMessage(E.ClassName+' error raised, with message : '+E.Message);
end;
end
end;
Mais cela ne fait rien (je renifler le trafic réseau http pour voir si cela fonctionne). J'ai utilisé InternetOpenURL avec succès mais j'ai aussi besoin d'envoyer une requête POST et cette fonction ne le fait pas.
Quelqu'un pourrait-il me montrer un exemple simple? Le résultat que je veux est d'obtenir la page de réponse http dans un var en tant que chaîne.
J'ai trouvé la source de votre code pour vous afin que vous puissiez citer l'auteur original. J'ai changé le code pour supprimer les déclarations de cas booléennes mal conçues, et j'ai changé le referrer afin qu'il ne mens pas et prétendre être Firefox 3.0.10. –
Je ne peux pas trouver quelle unité contient ParseURL, ou c'est peut-être une routine personnalisée. Le code à: http://delphi.pastebin.com/f1ea3a752 est quelque peu différent et n'utilise pas ParseURL. – lkessler
Comment ajouter une valeur d'en-tête personnalisée à la demande de publication? – hikari