![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Пост запрос [D7, WinXP]
happy © (2007-12-08 09:48:00)Доброго времени суток!
В общем есть скрипт на php такого вида:
<?
$data=$_POST['data'];
$filename = date('H_i-d.m.Y', time()+3600*6).".txt";
$fp=fopen($filename, 'w');
fwrite($fp, base64_decode($data));
fclose($fp);
?>
Есть строка зашифрованная base64.
Вопрос:
Как передать средствами WinApi
этому скрипту POST запросом строку чтобы он ее записал в файл?
Happy (2007-12-08 16:55:00) [1]
> Наверняка в indy должны быть уже готовые решения.
Хотелось бы сделать средствами WinApi.
homm (2007-12-08 14:46:00) [2]Наверняка в indy должны быть уже готовые решения.
Happy (2007-12-08 14:15:00) [3]Пробую отправить так:
procedure SendPOSTData(const szHost, szPath, szData: PChar);
var
szHeaders: TStr;
hOpenHandle,
hConnectHandle,
hResourceHandle: Pointer;
begin
hOpenHandle := InternetOpen(nil, 0, nil, nil, 0);
if hOpenHandle <> nil then
begin
hConnectHandle := InternetConnect(hOpenHandle,
szHost,
80,
nil,
nil,
3,
0,
0);
if hConnectHandle <> nil then
begin
hResourceHandle := HttpOpenRequest(hConnectHandle,
'POST',
szPath,
nil,
nil,
nil,
$00400000,
0);
if hResourceHandle <> nil then
begin
ZeroMemory(@szHeaders, SizeOf(szHeaders));
lstrcpy(szHeaders, 'Content-Type: application/x-www-form-urlencoded');
lstrcat(szHeaders, #10#13#0);
HttpSendRequest(hResourceHandle,
szHeaders,
Length(szHeaders),
szData,
lstrlen(szData));
end;
InternetCloseHandle(hResourceHandle);
end;
InternetCloseHandle(hConnectHandle);
end;
InternetCloseHandle(hOpenHandle);
end; //SendPOSTData
Половина строки - иероглифы.
Строку перевожу в Base64 так:
function Base64Encode(szStr: PChar): PChar;
var
dwSize: Dword;
begin
CryptBinaryToStringA(szStr, lstrlen(szStr), 1, nil, dwSize);
Result := HeapAlloc(GetProcessHeap, 0, dwSize);
CryptBinaryToStringA(szStr, lstrlen(szStr), 1, Result, dwSize);
end; //Base64Encode