VC/Internet/async web page downloading

2 отговора 89 прегледа
#1

VC/Internet/async web page downloading

CAsyncMonikerFile - това е един MFC клас с който доста лесно може да свалите интернет сраница. Съдържанието на страницата, блок по блок, се връща в Callback func. Това е удобно ако правите Инет радио listener да кажем. Примерно обаче, има сървери които в зависимост от клиента за един url връщат различни страници ([линк]). С Телнет си пуска mp3 binary stream (after blind GET / заявка), но CAsyncMonikerFile::Open функцята работи както и Експлорера (праща допълнитено инфо към сервера в своята HTTP Get заявка) и серверът вместо музика връща HTML intro page. Уви Open метода приема само URL (А не HTTP command). Та има ли някои идеи/опит как да си пратя една проста Get заявка с този клас, или сеща ли се за подобен ( асинхронен)
Сигурно мога да си направа някъв таймер да чете от време на време, но с Колбек функция по ме кефи :)

ако имате идеи ще съм ви благодарен !

Отговор
в отговор на miro #2

Re: VC/Internet/async web page downloading

ъъъ.. да видим какво помня:
там където се имплементва IBindStatusCallback, трябва да имплементнеш и IHttpNegotiate. На IHttpNegotiate::BeginningTransaction можеш да добавиш допълнителни редове в http заявката (те са с приоритет пред стандартните) - примерно User-agent, Referer, там разни cookies и друго каквото се сетиш.

не зная този mfc клас дали е намислен да работи така - трябва да го погледнеш; ако не е много лесно наследяването му, можеш да ползваш WinInet фунциите - те също ти дават асинхронен download (те url moniker-ите са стъпили върху тях).

Отговор
в отговор на _ #3

Re: VC/Internet/async web page downloading

Много ти благодаря за инфото. С АПИтата го написах и има един много полезен пример "SAMPLE: How to Use AsyncHTTP to Call WinInet APIs Asynchronously" относно това.

Отговор