Введение в WinInet
От: Игорь Ткачёв Россия linq2db.com
Дата: 07.08.01 14:55
Оценка: 490 (15) +2
Статья:
Введение в WinInet
Автор(ы): Игорь Ткачёв
Дата: 03.08.2001


Авторы:
Игорь Ткачёв

Аннотация:
Ещё вчера Вы даже и не думали о написании программ, использующих интернет протоколы, полагая, что это удел web-программистов. Но, уже сегодня перед Вами стоит задача прочитать/записать, передать/принять, получить/послать что-либо из своей программы на какой-либо интернет-сервер. Какие средства для этого существуют Сколько времени уйдёт на их изучение и эксперименты Давайте рассмотрим один из способов, который позволяет решать большинство подобных задач в максимально короткие сроки.
Если нам не помогут, то мы тоже никого не пощадим.
придётся подправить getaddr.zip
От: adontz Грузия http://adontz.wordpress.com/
Дата: 04.01.03 00:00
Оценка:
На странице открываемой примером

A new version of Find ZIP Codes is now available.
This version will continue to be supported for a limited time.
A journey of a thousand miles must begin with a single step © Lau Tsu
Ограничения
От: mSerg Украина  
Дата: 03.09.02 14:41
Оценка:
>1. INFO: WinInet Limits Connections Per Server (Q183110).
>WinInet ограничивает число соединений для одного сервера, которое может быть равно двум или четырём. >Такое ограничение связано с соглашениями HTTP спецификации и стандарта.

Это ограничение задается ключем в реестре.
И в Windows 2000 значение по умолчанию — 100.
WBR, Serg Matskov
Пример какой-то...
От: Strudel  
Дата: 25.02.02 01:37
Оценка:
Непонятный. :)

if (fnews.is_open()) for (;) {
// читаем данные
char szData[1024];
DWORD dwBytesRead;
BOOL bRead =
::InternetReadFile(
hRequest,
szData,sizeof(szData)-1,
&dwBytesRead);

// выход из цикла при ошибке или завершении
if (bRead == FALSE || dwBytesRead == 0)
break;

// сохраняем результат
szData[dwBytesRead] = 0;
Тут что, надежды, прочитать больше килобайта, нет? Если файл размером больше или читается не за один заход, то получим только его хвост.
Proxy settings query
От: Alexandr Lookoshkoff www.ginstall.com
Дата: 06.09.01 01:30
Оценка:
(Сорри, ентер лишний раз нажал)

Вот почитал статью про вининет... полезно, но вининет не во всяких виндах есть и не со всяким эксплорером идет, а мне надо чтобы везде работало. Даже винсока второго в старой 95 не было. Приходится довольствоваться первым, но всплыла проблема определения прокси-сервера на системах где стоит галка "автоопределение" :(

И что-то никак у меня не получается добиться прокси от вининета. Т.е. заставить его коннектиться с текущими настройками я могу, но переделывать программу, уже работающую... делить ее на две ветки одну для винсока, другую для вининета не очень то хочется, а где забрать настройки прокси я так и не понял :(
Proxy settings query
От: Alexandr Lookoshkoff www.ginstall.com
Дата: 06.09.01 01:25
Оценка:
Как насчет асинхронного режима?
От: Аноним  
Дата: 28.08.01 05:25
Оценка:
Дает ли какое-нибудь ощутимое преимущество в скорости загрузки использование сабж?
getaddr - облом
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 14.08.01 01:15
Оценка:
While trying to retrieve the URL: http://www.usps.com/cgi-bin/zip4/zip4inq2

The following error was encountered:

Cache Access Denied.

Sorry, you are not currently allowed to request:

http://www.usps.com/cgi-bin/zip4/zip4inq2
from this cache until you have authenticated yourself.
CALC.exe ругается
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 14.08.01 01:10
Оценка:
...говорит "Неправильный указатель" (причем в виндовой кодировке в консольном окошке).
Чего в супе не хватает.
ОС-win2000, доступ в инет через прокси.
WinInet
От: sberezuk  
Дата: 08.08.01 14:55
Оценка:
Hello Igor. An article is just perfect. Unfortunately, no time to check how that works. Thanks.
Re: Proxy settings query
От: SergPas Украина  
Дата: 03.04.02 03:53
Оценка:
Можно подправить :
bool CHTTPReader::OpenConnection (LPCTSTR lpszServerName,LPCTSTR lpszLogin,LPCTSTR lpszPassword)
{
if (OpenInternet() && m_hConnection == NULL)
m_hConnection = ::InternetConnect(
m_hInternet,
lpszServerName?
lpszServerName:
m_lpszServerName?
m_lpszServerName:
TEXT("localhost"),
m_bUseSSL? INTERNET_DEFAULT_HTTPS_PORT: INTERNET_DEFAULT_HTTP_PORT,
lpszLogin,
lpszPassword,
INTERNET_SERVICE_HTTP,
0,
1u);

return CheckError(m_hConnection != NULL);
}
и должно заработать
Re: Пример какой-то...
От: Strudel  
Дата: 25.02.02 01:43
Оценка:
Извиниюсь,разобрался.

fnews << szData; — внутри цикла. Не заметил. :)
Re: Как насчет асинхронного режима?
От: CooLer Россия http://bestsoft.far.ru
Дата: 11.09.01 06:47
Оценка:
Ничего он не даёт, только геморой. Для FTP может что-то и даёт, для HTTP я не нашёл ни одного толкового примера, что подтвердило мою версию о том, что HTTP и асинхронный режим не дружат.
Поэтому я в статью это даже и не включал. Лучше использовать многозадаяность. Если я не прав с радостью выслушаю любую информацию по этому поводу, а лучше хороший пример.
"Выше голову" — сказл палач, надевая петлю
Re:CALC.exe ругается
От: CooLer Россия http://bestsoft.far.ru
Дата: 21.08.01 01:11
Оценка:
Это очень плохо.
У меня всё работает и через прокси и без.
Если работает в браузере, то должно работать и через WinInet, если нет, то у тебя неправильный WinInet ;)
Попробуй ещё поставить rd.SetDataBuffer(20*1024); перед чтением, может быть нулевая длинна возвращается не только из-за неправильной работы сервера, но и клиента.
"Выше голову" — сказл палач, надевая петлю
Re:CALC.exe ругается
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 20.08.01 21:50
Оценка:
IT, go and look! :-)
Re:getaddr - облом
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 14.08.01 01:21
Оценка:
похоже дело в том, что прокси требует авторизации — логин, пароль.
Как это дело отрабатывается? Примерчик бы работающий...
Re:WinInet
От: CooLer Россия http://bestsoft.far.ru
Дата: 09.08.01 00:50
Оценка:
Спасибо! А чего там чекать, WinInet как WinInet :o)
А вообще-то, каждый архив проекта в каталоге Release содержит собранную программу, проверенную доступными антивирусными средствами и готовую к исполнению. Запуск примеров много времени не займёт.
Happy coding,
Игорь.
"Выше голову" — сказл палач, надевая петлю
А как у тебя CALC компилился?
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 21.08.01 22:15
Оценка:
cout << root->selectSingleNode(L"/calc/x")->text << " * "

calc.cpp(23) : error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'class _bstr_t' (or there is no acceptable conversion)
Re: А как у тебя CALC компилился?
От: CooLer Россия http://bestsoft.far.ru
Дата: 22.08.01 06:15
Оценка:
Странно! А у меня всё работает. Может у тебя и VC++ не правильный? ;)
Попробуй поставить (LPCTSTR)перед root->...
"Выше голову" — сказл палач, надевая петлю
Re: А как у тебя CALC компилился?
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 22.08.01 16:50
Оценка:
горе мне горе, и WinInet у меня не правильный и VC (№6+SP5+STLPort) :-(
С (LPCTSTR) конечно все прошло, но вот где берут cout, которые и без этого работают?
Ладно, ближе к телу. Дело видимо все-таки в том что выход через мой прокси по паролю. Поскольку calc его нигде не спрашивает, то в

char *data = rd.GetData();

я получаю страничку с Cache Access Denied и т.д. и т.п

и после этого

MSXML::IXMLDOMElementPtr root = xml->documentElement;

root==NULL и дальше выбрасывается исключение "Неправильный указатель".

Как все-таки доработать примерчик, чтобы он спрашивал пароль к прокси?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.