Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

[C#] File exist over internet heen

Pagina: 1
Acties:

  • Mir
  • Registratie: Maart 2001
  • Niet online
He,

Ik heb op verschillende fora's gezocht, maar ik kan niets vinden wat er op duidt dat het mogelijk is om te controleren of een bestand bestaat op een bepaalde webserver (bijv. of http://www.google.com/logo.jpg bestaat).

Ik wil niet het volledige bestand over halen, omdat dit soms 10 mb kan zijn.

Het mooist zou zijn als ik alleen een 300 of 404 terug kan krijgen. Maar ik kan nergens vinden of dit mogelijk is. Een hiervoor in .NET ingebouwde functionaliteit ben ik ook nog niet tegen gekomen.

Is het uberhaupt mogelijk?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Mir schreef op maandag 06 oktober 2008 @ 16:29:
He,

Ik heb op verschillende fora's gezocht, maar ik kan niets vinden wat er op duidt dat het mogelijk is om te controleren of een bestand bestaat op een bepaalde webserver (bijv. of http://www.google.com/logo.jpg bestaat).
Euh, daar zijn HTTP status codes voor (zoals 404: Not found en 200 OK) ;)
Mir schreef op maandag 06 oktober 2008 @ 16:29:
Ik wil niet het volledige bestand over halen, omdat dit soms 10 mb kan zijn.
Daar zijn weer verschillende requests als HEAD voor ;)

Ik heb geen idee zo of de WebRequest class dit ondersteunt (ik vermoed van wel), maar anders ben je er toch ook zo met een paar socket calls?

edit: Ja dus

[ Voor 15% gewijzigd door RobIII op 06-10-2008 16:37 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Spiked
  • Registratie: Mei 2008
  • Laatst online: 24-09 11:51
Ik ben geen expert op C# gebied, maar gebruik in plaats van GET of POST "HEAD", dan krijg je alleen de headers terug van de webserver.

Edit: Beat me to it

[ Voor 7% gewijzigd door Spiked op 06-10-2008 16:31 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
En even een quick'n'dirty opzetje:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public bool CheckExist(string url)
{
    try
    {
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
        req.AllowAutoRedirect = true;
        req.Method = "HEAD";
        WebResponse res = req.GetResponse();
//        int len;
//        int.TryParse(res.Headers["Content-Length"], out len);
//        return len > 0;
        return true;
    }
    catch (WebException ex)
    {
        return false;
    }
}

[ Voor 14% gewijzigd door RobIII op 06-10-2008 17:03 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

RobIII schreef op maandag 06 oktober 2008 @ 16:30:
Ik heb geen idee zo of de WebRequest class dit ondersteunt (ik vermoed van wel), maar anders ben je er toch ook zo met een paar socket calls?
Los van dat HttpWebRequest het inderdaad kan zou ik niet zomaar even 'met een paar socket calls' heel HTTP/1.1 gaan implementeren voor iets als dit, je resultaten gaan best onbetrouwbaar zijn als je een hoop situaties niet correct afhandelt. HttpWebRequest handelt bijvoorbeeld default al redirects voor je af, en gaat correct om met 401 vraagstukken.

Professionele website nodig?