![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблемы с геттерами
Рацелий © (2007-07-09 12:16:00)Здравствуйте, Мастера!
У меня очень большая проблема. Я совершенно не могу получить ответ от моего скрипта. Вот что я должен, по идее, получить:
crc32.php:8465126387 libcrc32.php:748454565
а в ответ пустоту. Если убрать вырезку html, то вот что получаю:
HTTP/1.1 200 OK
Date: Sun, 08 Jul 2007 08:16:08 GMT
Server: Apache/1.3.33 (Win32) PHP/4.4.2
X-Powered-By: PHP/4.4.2
Connection: close
Content-Type: text/html
Я совершенно не могу понять в чем причина, я уже нашел топик здесь на 4 странице, скопировал код, но все равно не то. Скрипт 100% рабочий.
Код программы и скрипт вы можете скачать отсюда:
http://hate.byethost.com/iq/e107_files/public/36_mycvs_updater.zip
А вот выкладываю просто код (если кто-то не хочет закачивать):
function GetData(const action: string; get: boolean): string;
const
host = 'test1.ru';
var
wData : WSADATA;
addr : sockaddr_in;
sock : TSocket;
error : integer;
buf : array [0..1023] of Char;
s : string;
phe : PHostEnt;
begin
//Инициализация сокета
Result := '';
WSAStartup($0101, wData);
phe := gethostbyname(PChar(string(host)));
if phe = nil then
begin
WSACleanup;
Exit;
end;
sock := socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if sock = INVALID_SOCKET then
begin
WSACleanup;
Exit;
end;
addr.sin_family := AF_INET;
addr.sin_port := htons(80);
addr.sin_addr := PInAddr(phe.h_addr_list^)^;
error := connect(sock, addr, sizeof(addr));
if error = SOCKET_ERROR then
begin
closesocket(sock);
WSACleanup;
Exit;
end;
// Составляем строку запроса
s := 'GET /crc32.php?action=updater&mode=view' + ' HTTP/1.0'#13#10 + 'Host: ' + host + #13#10#13#10;
{str := 'POST /crc32.php?action=update' + ' HTTP/1.0'#13#10 +
'Host: ' + host + #13#10 +
'Content-Type: application/x-www-form-urlencoded'#13#10 +
'Content-Length: 14'#13#10#13#10 + 'action=updater'; }
// отправляем
send(sock, s[1], Length(s), 0);
// Если нужен ответ то принимаем
if get then
begin
ZeroMemory(@buf, 1024);
error := recv(sock, buf, 1024, 0);
while error > 0 do
begin
Result := Result + Copy(buf, 0, error);
error := recv(sock, buf, 1024, 0);
end;
end;
// Закрываем сокет – завершаем работу с сетью
closesocket(sock);
WSACleanup;
// Вырезаем из ответа то что нам нужно, т.е. отрезаем HTTP заголовки
//if (get) and (Result '') then
//Result := Copy(Result, pos(#13#10#13#10, Result) + 4, Length(Result));
end;
umbra (2007-07-09 12:51:00) [1]а можно полностью привести тексты запроса и ответа сервера, полученные сниффером каким-нибудь?
Рацелий (2007-07-09 12:17:00) [2]Очень прошу, помогите!