ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Прочитать ответ скрипта средствами WinAPI
  #1  
Старый 12.06.2010, 19:42
Аватар для miako
miako
Познающий
Регистрация: 20.01.2010
Сообщений: 43
Провел на форуме:
41357

Репутация: 6
По умолчанию Прочитать ответ скрипта средствами WinAPI

Есть пхп скрипт. В нем echo 'hello'; Как мне получить это хеллоу самым простым способом?

Делаю так:
Код:
hInet := InternetOpen('Delphi',INTERNET_OPEN_TYPE_PRECONFIG,nil,nil,0);
      hFile := InternetConnect(
                hInet,
                'localhost',
                INTERNET_DEFAULT_HTTP_PORT,
                nil,nil,
                INTERNET_SERVICE_HTTP,
                0,
                1);
      hRequest := HttpOpenRequest(
                    hFile,
                    'POST',
                    'test.php',
                    nil,
                    nil,
                    nil,
                    INTERNET_FLAG_NO_CACHE_WRITE,
                    1);
      bSend := HttpSendRequest(hRequest, nil,0, nil,0);
      InternetReadFile(hRequest, @Buffer, 4, BufferLen);
В результате в buffer оказываются иероглифы.
 
Ответить с цитированием

  #2  
Старый 12.06.2010, 20:54
Аватар для Gar|k
Gar|k
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме:
991929

Репутация: 395


По умолчанию

может GET... да и в результате ты получишь еще http заголовки
кстати если php исполняется у тебя на компе не в виде модуля апатча можно напрямую через пайпы запустить php.exe и выполнить указанный скрипт...

Последний раз редактировалось Gar|k; 12.06.2010 в 21:03..
 
Ответить с цитированием

  #3  
Старый 12.06.2010, 21:03
Аватар для akimov_aleks
akimov_aleks
Новичок
Регистрация: 03.05.2009
Сообщений: 22
Провел на форуме:
38103

Репутация: 0
По умолчанию

кроме get другова не чего невижу простого
 
Ответить с цитированием

  #4  
Старый 12.06.2010, 22:06
Аватар для miako
miako
Познающий
Регистрация: 20.01.2010
Сообщений: 43
Провел на форуме:
41357

Репутация: 6
По умолчанию

Гетом сразу пробовал, тоже самое. в метатегах стоит utf-8, API тоже юникод. Сам хз что тут не так...
 
Ответить с цитированием

  #5  
Старый 13.06.2010, 19:34
Аватар для Overdrive
Overdrive
Новичок
Регистрация: 05.06.2010
Сообщений: 1
Провел на форуме:
854

Репутация: 0
По умолчанию

Возможно ты не правильно указал параметры функциям. Посмотри информацию о функциях в справочнике по WinAPI, а еще лучше в MSDN.
 
Ответить с цитированием

  #6  
Старый 13.06.2010, 19:53
Аватар для miako
miako
Познающий
Регистрация: 20.01.2010
Сообщений: 43
Провел на форуме:
41357

Репутация: 6
По умолчанию

А я по твойму откуда их брал?
 
Ответить с цитированием

  #7  
Старый 13.06.2010, 21:33
Аватар для Faost
Faost
Новичок
Регистрация: 11.07.2009
Сообщений: 20
Провел на форуме:
39998

Репутация: 2
Отправить сообщение для Faost с помощью ICQ
По умолчанию

Код:
uses
  Windows,
  WinSock;



 var Sock: TSocket;
     addr: sockaddr_in;
     wsa: wsadata;
     host: PHostEnt;
     Get: string;
     avail_bytes: integer;
     buf: pointer;
     fset: TFDset;
     label 2, 3;
begin
 if WSAStartup(MAKEWORD(1, 1), wsa) <> 0 then ExitProcess(0);

 Sock := socket(AF_INET, SOCK_STREAM, 0);
 if Sock = INVALID_SOCKET then goto 3;

 addr.sin_family := PF_INET;
 addr.sin_port := htons(80);
 host:= GetHostByName('antichat.net'); //заменишь на свой
 PInteger(@addr.sin_addr.S_addr)^:= PInteger(host.h_addr^)^;

  if connect(Sock, addr, sizeof(addr)) <> 0 then goto 2;

   Get:= 'GET http://antichat.net HTTP/1.0' + #13#10 + #13#10; //заменишь на свой

   send(Sock, PChar(Get)^, Length(Get), 0);
   avail_bytes:= 0;

   FD_ZERO(fset);
   FD_SET(Sock, fset);

   if select(0, @fset, nil, nil, nil) <= 0 then goto 2;
   ioctlsocket(Sock, FIONREAD, avail_bytes);
   buf:= VirtualAlloc(nil, avail_bytes, MEM_COMMIT, PAGE_READWRITE);
   recv(Sock, buf^, avail_bytes, 0);

   MessageBox(0, buf, nil, 0); //buf - наши данные
   VirtualFree(buf, 0, MEM_RELEASE);

  2: CloseSocket(Sock);

  3: WSACleanUp();
end.

Последний раз редактировалось Faost; 13.06.2010 в 21:36..
 
Ответить с цитированием

  #8  
Старый 13.06.2010, 21:44
Аватар для Pyhin
Pyhin
Познающий
Регистрация: 25.10.2008
Сообщений: 52
Провел на форуме:
1160666

Репутация: 48
По умолчанию

Попробуй сохранять код страницы в переменную таким способом:
Код:
  String;
  hRequest : pointer;
  dwBytesRead, I, L : Cardinal;
  sss: String;
  dwLength: DWORD;
  dwcode: array[1..20] of char;
  res: String;
-------------------------------------

I:=1;
 if HttpSendRequest(hRequest,PChar(sss), Length(sss), nil, 0) then
                 begin
                     repeat
                     dataAvaible(hRequest, L);
                     if L = 0 then break;
                     SetLength(result, L+I);
                     if InternetReadFile(hRequest, @result[I], sizeof(L), dwBytesRead) then
                     else break;
                     inc(I, dwBytesRead);
                     until dwBytesRead = 0;

                     result[I] := #0;
                     res := PChar(@dwcode);
                 end;
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чёртов интернет >_< Ponchik Болталка 26 06.05.2010 12:16
Сетевой этикет (Перед тем, как задать вопрос хакеру) satana-fu Статьи 7 21.10.2009 07:40
ВКонтакте "счастливый фермер" ЖенькО Социальные сети 309 22.07.2009 11:35
Proxy FAQ foreva Чужие Статьи 12 04.01.2008 12:15



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ