Я пытаюсь выполнить HTTP-запросы из Delphi с помощью функций WinInet.Как отправить запрос HTTP POST в Delphi с помощью WinInet api
До сих пор у меня есть:
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;
Но это ничего не делать (я нюхать сети HTTP трафик, чтобы увидеть, если он работает). Я успешно использовал InternetOpenURL, но мне также нужно отправить запрос POST, и эта функция не делает этого.
Может ли кто-нибудь показать мне простой пример? В результате я хочу получить страницу ответа http в переменной var.
Я нашел для вас источник вашего кода, чтобы вы могли привести оригинального автора. Я изменил код, чтобы удалить непродуманные логические операторы case, и я изменил реферер, чтобы он не лгал и утверждал, что он Firefox 3.0.10. –
Я не могу найти, какая единица содержит ParseURL, или, может быть, ее пользовательскую процедуру. Код по адресу: http://delphi.pastebin.com/f1ea3a752 несколько отличается и не использует ParseURL. – lkessler
Как вы добавили пользовательское значение заголовка в запрос на отправку? – hikari