C++ dziwne zachowanie InternetOpenUrl

0

witam wszytskich,

mam taki problem - chyba drobny ale już mnie wkurza.

chce sprawdzić czy istnieje plik w internecie
i robie tak

bool q;
int x, y;
HINTERNET hInet, hConn, hUrl;

q = true;

hInet =  InternetOpen("HTTPGET", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
hConn = InternetConnect(hInet, "www.mojastrona.pl", 80, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
hUrl = InternetOpenUrl(hConn, "http://www.mojastrona.pl/news.txt", NULL, 0,      0, 0);

if  (hUrl == NULL)   q = false;

i jak tak mam to za każdym razem hUrl jest NULL

z <ort>kolei</ort>:
jak pomine InternetConnect to za każdym razem mam hUrl != NULL nawet jak pliku fizycznie w internecie nie ma

hInet =  InternetOpen("HTTPGET", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
hUrl = InternetOpenUrl(hInet, "http://www.mojastrona.pl/news.txt", NULL, 0,      0, 0);

if  (hUrl == NULL)   q = false;

a żeby było całkiem śmiesznie to jeśli w wariancie 1 dołoże GetLastErro to też hURL jest zawsze różne od NULL nawet jak pliku w necie nie ma.

= true;

hInet =  InternetOpen("HTTPGET", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
hConn = InternetConnect(hInet, "www.mojastrona.pl", 80, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
hUrl = InternetOpenUrl(hConn, "http://www.mojastrona.pl/news.txt", NULL, 0,      0, 0);

j = GetLastError();

wsprintf(p, "Unable To Process Internet Request; Connect Error: %i", j);

MessageBox(0, p,"Informacja", 0); 

if  (hUrl == NULL)   q = false;

Błąd jest zawsze 12018 ale cudownie hUrl nie jest już NULL

szlag mnie trafia - gdzie tu robie źle ?

a może porsciej można sprawdzić czy jest plik w internecie na url czy nie ma ?

0

w sprawie hUrl - roznica miedzy 1 a 3 jest dla niego zadna, cos musi byc skopane poza nim ze nagle sie hUrl zmienia..

co do samego sprawdzenia czy pod danym adresem cos jest - droga jest jedna:

  • polaczyc sie z serwerem
  • wyslac httprequest
  • sprawdzic kod odpowiedzi. jesli jest inny niz OK - to nie ma

zerknij jak to jest robione na: http://docs.rinet.ru/WPU/ch17.htm
poczawszy od linijek

// Initialize the Internet DLL
   HINTERNET hSession = ::InternetOpen("Raw HTML Reader"

po kodzie nastepuje obszerne wyjasnienie krok-po-kroku co kazdy fragment robi

niestety, najbardziej interesujacego Cie fragmentu akurat tutaj nie ma :)
po HttpSendRequest uzywaja HttpQueryInfo aby zbadac HTTP_QUERY_CONTENT_LENGTH, Ty zas raczej uzyjesz HTTP_QUERY_STATUS_CODE (patrz http://msdn.microsoft.com/en-us/library/aa385351(VS.85).aspx oraz http://msdn.microsoft.com/en-us/library/aa384325(VS.85).aspx)

1 użytkowników online, w tym zalogowanych: 0, gości: 1