Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2013, 17:06   #1
Alex2009
Proger Man
Форумчанин
 
Аватар для Alex2009
 
Регистрация: 07.03.2009
Сообщений: 584
По умолчанию WinInit получить заголовки

Доброе время суток, ребят!
Прошу помощи так как гугл нечего не дал, как можно получить заголовки в WinInit?

Пробовал вот так, но нечего не получаю.

Код:
if HttpQueryInfo(Request, HTTP_QUERY_RAW_HEADERS_CRLF, @tszTemp, bLen,hInd) then
begin
     otvet := tszTemp;
end;
ShowMessage('Добро пожаловать!');

Последний раз редактировалось Alex2009; 07.03.2013 в 17:08.
Alex2009 вне форума Ответить с цитированием
Старый 07.03.2013, 17:46   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Рекомендую вот отсюда: http://msdn.microsoft.com/ru-ru/libr.../aa385373.aspx
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.03.2013, 18:05   #3
Alex2009
Proger Man
Форумчанин
 
Аватар для Alex2009
 
Регистрация: 07.03.2009
Сообщений: 584
По умолчанию

Спасибо, ув. Stilet, я и так пользуюсь этим.

С заголовками с трудом разобрался, но вот возникла теперь иная проблема, отлавливать редирект.
Пробовал в тупую парсить Location: но не выходит.
Может у кого есть идеи или готовый код?
ShowMessage('Добро пожаловать!');
Alex2009 вне форума Ответить с цитированием
Старый 07.03.2013, 19:32   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

В таком случае я бы через GetLastError() получил код ошибки и посмотрел что она означает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.03.2013, 19:46   #5
Alex2009
Proger Man
Форумчанин
 
Аватар для Alex2009
 
Регистрация: 07.03.2009
Сообщений: 584
По умолчанию

Спасибо буду пробовать.
К сожалению плюсом отблагодарить не могу в связи лимитами форума(
ShowMessage('Добро пожаловать!');
Alex2009 вне форума Ответить с цитированием
Старый 07.03.2013, 19:52   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не страшно.
Кстати я я взял за привычку писать так:
Код:
SetLastError(0);
if HttpQueryInfo(Request, HTTP_QUERY_RAW_HEADERS_CRLF, @tszTemp, bLen,hInd) then
begin
     otvet := tszTemp;
end else RaiseLastOSError();
// или ...:=SysErrorMessage(GetLastError); если не нужно месседжем выводить ошибку.
Что даст читабельную ошибку. Тады хоть понятно будет что произошло.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.03.2013, 20:37   #7
Alex2009
Proger Man
Форумчанин
 
Аватар для Alex2009
 
Регистрация: 07.03.2009
Сообщений: 584
По умолчанию

Спасибо вам большое еще раз.

И последний вопрос, как работать с HTTPS пробовал просто порт менять как написано в документации, но не работает почему то, может я что то пропустил, по мимо порта еще нужны какие то параметры?
ShowMessage('Добро пожаловать!');
Alex2009 вне форума Ответить с цитированием
Старый 07.03.2013, 21:02   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Нисрастуха у меня случилась с SSL, так что не работал с ним в реале.
Знаю что обязательно нужны еще две DLL в наличии для работы с ним. И еще что-то. но что не помню.
Если зарулишь хороший пример - выложи сюда, вдруг кому понадобится.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.03.2013, 21:21   #9
Alex2009
Proger Man
Форумчанин
 
Аватар для Alex2009
 
Регистрация: 07.03.2009
Сообщений: 584
По умолчанию

dll файлы уже идут с Windows их ложат для подстраховки, называются libeay32.dll и ssleay32.dll.

Хорошо, обязательно выложу.

При 3-х запросах или более получаю out of memory, сама функция у меня в AnsiString
Код:
function TVKEngineAPI.HTTPMethod(method, url: string): AnsiString;
Если закоментировать этот кусок кода, все отлично, но где косяк я так и не понял.
Код:
repeat
          //Получаем кол-во принимаемых данных
          if L = 0 then break;
          SetLength(sTemp,L + I);
          if InternetReadFile(hRequest,@sTemp[I],sizeof(L),dwBytesRead) then
          else break;
          inc(I,dwBytesRead);
          until dwBytesRead = 0;
          sTemp[I] := #0;
          Result := sTemp;
ShowMessage('Добро пожаловать!');

Последний раз редактировалось Stilet; 07.03.2013 в 21:29.
Alex2009 вне форума Ответить с цитированием
Старый 07.03.2013, 21:35   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
sizeof(L)
Что это? Зачем? Если L у тебя integer то ты пытаешся запросить 32 тысячи байт.
http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
А тебе видимо нужно писать либо sizeof(sTemp) либо Length(sTemp). И проверками не гнушайся:
Код:
          if not InternetReadFile(hRequest,@sTemp[I], Length(sTemp),dwBytesRead) then
          begin 
RaiseLastOSError();
break;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заголовки классов Kira444 Помощь студентам 1 05.01.2011 22:23
заголовки и подпрограммы kuzmich Общие вопросы Delphi 3 14.12.2010 18:25
THTTPReqResp и заголовки talero Работа с сетью в Delphi 0 16.12.2009 03:33
Заголовки по центру doniyor БД в Delphi 7 18.08.2009 08:21
Получить заголовки главных окон AlexandrSid Общие вопросы Delphi 4 22.05.2009 11:23