Avatar billede pissed_squirrel Nybegynder
12. juli 2008 - 00:06 Der er 10 kommentarer og
1 løsning

HttpWebResponse Timeout

Hej Eksperten

Jeg har et problem et sted i min kode

Dim req As HttpWebRequest = CType(WebRequest.Create(url), HttpWebRequest)
        Dim resp As HttpWebResponse = CType(req.GetResponse, HttpWebResponse)
        Dim instm As Stream = resp.GetResponseStream

Denne stump kode viker fint, men hvis jeg gerne vil kontakte urlen et andet sted i koden med en HttpWebRequest så får jeg en timeout på den HttpWebResponse som jeg har angivet ovenfor

Jeg kontakter 1 til 2 url'er for at få længden på den eller de filer som ligger der. Jeg gør dette for at få den samlede længde på alle de filer som skal hentes.
Efter jeg har fået længderne på den eller dem så kalder jeg så en funktion som bruger en ovenstående kode for at hente filerne

Nogen der kan fortælle mig hvorfor jeg gør det og hvordan jeg evt. kan komme forbi dette problem?
Avatar billede pissed_squirrel Nybegynder
12. juli 2008 - 00:12 #1
Det mærkelige er, hvis jeg kun bruger HttpWebRequest en gang når jeg vil have længden, altså hvis der kun er 1 fil den skal tjekke på, så virker det hele fint, ingen timeout eller noget.

Men hvis jeg skal have den samlede længde på 2 filer så får jeg et timeout efterfølgende når jeg vil downloade dem.

:-$
Avatar billede arne_v Ekspert
12. juli 2008 - 00:21 #2
Jeg er ikke helt sikker på at jeg har forstået omstændighederne korrekt.

Men et oplagt spørgsmål er jo om du får lukket korrekt ned efter du har
lavet en connection.
Avatar billede pissed_squirrel Nybegynder
12. juli 2008 - 17:07 #3
Hvordan sikrer man sig at der er lukket ordenligt ned for en HttpWebRequest?

I min kode ser der nemlig ikke ud som om jeg lukker for den på noget tidspunkt
Avatar billede arne_v Ekspert
12. juli 2008 - 17:51 #4
Baade Stream og HttpWebResponse har en Close metode.
Avatar billede pissed_squirrel Nybegynder
12. juli 2008 - 22:02 #5
Ja, men HttpWebRequest har da ikke?

Jeg bruger jo kun HttpWebRequest når jeg skal have størrelsen før jeg bruger den når jeg skal hente filen/filerne
Avatar billede arne_v Ekspert
12. juli 2008 - 22:08 #6
Jeg tror da at du kalder req.GetResponse inden du finder størrelsen - og så har du
en response som kan closes.
Avatar billede pissed_squirrel Nybegynder
13. juli 2008 - 00:30 #7
Dim requ As HttpWebRequest = WebRequest.Create(DLurl(no))
allcontentlength = allcontentlength + requ.GetResponse.ContentLength

Det er hvad jeg gør, hvordan vil du lukke forbindelsen efter dette er gjort?
Avatar billede pissed_squirrel Nybegynder
13. juli 2008 - 00:31 #8
Bare med en simpel

requ.GetResponse.Close()

??

Kan det virkelig være så nemt?
Avatar billede arne_v Ekspert
13. juli 2008 - 00:54 #9
Dim requ As HttpWebRequest = WebRequest.Create(DLurl(no))
Dim resp As HttpWebResponse = CType(req.GetResponse, HttpWebResponse)
allcontentlength = allcontentlength + resp.ContentLength
resp.Close
Avatar billede pissed_squirrel Nybegynder
13. juli 2008 - 00:56 #10
Fungerer perfekt, som altid når du har en finger med ;)

Smider du et svar? :)
Avatar billede arne_v Ekspert
13. juli 2008 - 01:04 #11
kommer her
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB