Есть пхп скрипт. В нем echo 'hello'; Как мне получить это хеллоу самым простым способом? Делаю так: Code: 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 оказываются иероглифы.
может GET... да и в результате ты получишь еще http заголовки кстати если php исполняется у тебя на компе не в виде модуля апатча можно напрямую через пайпы запустить php.exe и выполнить указанный скрипт...
Возможно ты не правильно указал параметры функциям. Посмотри информацию о функциях в справочнике по WinAPI, а еще лучше в MSDN.
Code: 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.
Попробуй сохранять код страницы в переменную таким способом: Code: 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;