Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
Прочитать ответ скрипта средствами WinAPI |

12.06.2010, 19:42
|
|
Познающий
Регистрация: 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 оказываются иероглифы.
|
|
|

12.06.2010, 20:54
|
|
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме: 991929
Репутация:
395
|
|
может GET... да и в результате ты получишь еще http заголовки
кстати если php исполняется у тебя на компе не в виде модуля апатча можно напрямую через пайпы запустить php.exe и выполнить указанный скрипт...
Последний раз редактировалось Gar|k; 12.06.2010 в 21:03..
|
|
|

12.06.2010, 21:03
|
|
Новичок
Регистрация: 03.05.2009
Сообщений: 22
Провел на форуме: 38103
Репутация:
0
|
|
кроме get другова не чего невижу простого
|
|
|

12.06.2010, 22:06
|
|
Познающий
Регистрация: 20.01.2010
Сообщений: 43
Провел на форуме: 41357
Репутация:
6
|
|
Гетом сразу пробовал, тоже самое. в метатегах стоит utf-8, API тоже юникод. Сам хз что тут не так...
|
|
|

13.06.2010, 19:34
|
|
Новичок
Регистрация: 05.06.2010
Сообщений: 1
Провел на форуме: 854
Репутация:
0
|
|
Возможно ты не правильно указал параметры функциям. Посмотри информацию о функциях в справочнике по WinAPI, а еще лучше в MSDN.
|
|
|

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

13.06.2010, 21:33
|
|
Новичок
Регистрация: 11.07.2009
Сообщений: 20
Провел на форуме: 39998
Репутация:
2
|
|
Код:
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..
|
|
|

13.06.2010, 21:44
|
|
Познающий
Регистрация: 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;
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|