![]() |
[Delphi] Winsock 1.1 - В чем проблема?
реализовал методы GET & POST. Метод POST работает нормально.. Метод GETзависает и не может получить ответ от сервера. Сниффер показал, что get отправлен, а однако тело ответа пустое, заголовки пустые (ответные). В чем же проблема? привожу код.
Код:
// ---- Выдергиваем хост ---- |
Вот:
Код:
function Get(const AURL: string): string;'Content-Type: application/x-www-form-urlencoded' + #13#10 + #13#10; |
Еще 1 вопрос. Почему не доконца прогружает страницы? вот код процедуры запроса.
Код:
// ---- Отправка GET-запроса ----Код:
HTTP/1.1 200 OKКоды отправляемых заголовков: Код:
(* Основные заголовки *) |
Цитата:
Код:
Content-Type: application/x-www-form-urlencodedКод:
Connection: Keep-AliveКод:
Connection: close |
>>>>>> recv(Sock,buf,SizeOf(buf),0); <<<<<<
Ты уверен что сервак будет таким добрым чтобы дать тебе всю страницу целиком, а твой канал такой хороший, чтобы передать её потом без задержки? Проще говоря - тебе повезло что хоть часть файла сливается, чаще всего еще хуже, типа тока HTTP заголовок ответа. По этому: 1) если у тебя Connection: Close стоит то просто тупо читай в цикле пока читается чтото 2) если у тебя стоит Connection: Keep-alive то из заголовка ответа выдирай Contend-Length, от туда бери кол-во байт для считывания и считывай их. как считал так закрывай сам коннект. Для тебя проще будет первый способ юзать |
Цитата:
|
пытаюсь циклом... виснет...
Код:
// ---- Отправка запроса ---- |
Виснет, потому что должно присутствовать поле
Код:
Connection: close |
делал. страница приходит не до конца.. и кукисы не принимаются...
|
Хорошо.
Скинь еще раз полный вариант кода, который ты используешь для формирования запроса и для отправки, а также адрес, на который делаешь запрос. Постараюсь помочь. |
| Время: 21:57 |