Sto cercando di fare richieste HTTP da Delphi utilizzando le funzioni WinInet.Come inviare una richiesta POST HTTP in Delphi utilizzando WinInet api
Finora ho:
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;
Ma questo non fa nulla (mi sniffing il traffico http rete per vedere se funziona). Ho usato con successo InternetOpenURL ma ho anche bisogno di inviare la richiesta POST e quella funzione non lo fa.
Qualcuno potrebbe mostrarmi un semplice esempio? Il risultato che voglio è ottenere la pagina di risposta http in una var come stringa.
Ho trovato la fonte del codice per te in modo da poter citare l'autore originale. Ho cambiato il codice per rimuovere le false dichiarazioni booleane, e ho cambiato il referrer in modo da non mentire e affermare di essere Firefox 3.0.10. –
Non riesco a trovare quale unità contiene ParseURL, o forse è una routine personalizzata. Il codice su http://delphi.pastebin.com/f1ea3a752 è leggermente diverso e non usa ParseURL. – lkessler
Come aggiungerei un valore di intestazione personalizzato alla richiesta di post? – hikari