Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Пост запрос [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


Наверх

Титульная страница Поиск, карта сайта Написать письмо