![]() |
[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 |
делал. страница приходит не до конца.. и кукисы не принимаются...
|
Хорошо.
Скинь еще раз полный вариант кода, который ты используешь для формирования запроса и для отправки, а также адрес, на который делаешь запрос. Постараюсь помочь. |
нафига копируешь в цикле?
есть ведь длина полученных данных, юзай copy |
Вот код полностью рабочий код, который я переработал из твоего. Посмотри, что к чему.
Код:
function LookupName(str: string): TInAddr; |
|
2 Chrome~ ошибочка у тебя есть небольшая )
Код:
repeat |
slesh, да не спорю, ты прав )
Но это не я писал этот код, его писал RedFern.89. Просто именно в этой части кода я не делал никаких изменений. Делал только в тех частях, которые влияют на то, что нам отсылает сервер. То есть немного изменил формирование самого GET запроса. А на счет данной части кода: написано действительно неэффективно, без какой либо оптимизации. RedFern.89, архив либо битый, либо пасс не подходит. Попробуй сам внести изменения в свой код используя то, что я отписал выше. |
я с циклом не могу разобраца никак
|
так кто поможет с циклом?
|
отрубил антивирь, и все прекрасно работает)))) хз в ччем дело..если я запрашиваю другими компонентами страницы, то все норм а так посему то грузит и не до конца... странности какието со всем этим... =\
|
и причем запрос get работатет только при запущенном http analyzer'е о________________О
|
Скажи, с каким циклом у тебя проблемы, помогу.
|
| Время: 09:56 |