Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[.net] WebClient.UploadValues werkt alleen met proxy(Fiddle)

Pagina: 1
Acties:

  • trekker22
  • Registratie: Maart 2003
  • Laatst online: 17:34
heb een auto inlog programma in VB.Net gemaakt.

Inloggen gaat prima en dan wil ik nog een aantal stappen automatiseren.
programma loopt vast op deze regel, MITS Fiddler Proxy debugger NIET draait:
code:
1
2
3
4
5
Try
responsebytes = myWebClient.UploadValues("https://xxx.xxx/DOSOMETHING", "POST", myNameValueCollection2)
        Catch ex2 As Exception

Console.WriteLine("Exception: " & ex2.Message)


dus als ik Fiddler niet heb draaien krijgen ik op deze regel een:
Exception: The operation has timed out

Heb ik Fiddler wel draaien loopt die netjes door met UploadValues. Waar kan dit aan liggen?

Mijn idee is dat een grote website is waar vanalles op draait en ik kennelijk slechts ene deel van de HTTP traffic goed weet te emuleren. En kennelijk corrigeert Fiddler deze "foutjes" die ik maak in het HTTP verkeer?

Of moet ik het heel ergens anders zoeken?

  • trekker22
  • Registratie: Maart 2003
  • Laatst online: 17:34
EDIT

heb ook een andere proxy debugger Charles geprobeerd en ook op deze werkt het wel, zet ik hem uit, werkt het niet meer???

  • GrooV
  • Registratie: September 2004
  • Laatst online: 19-11 00:16
Je proxy staat nog ingesteld op Fiddler maar die draait niet meer?

  • trekker22
  • Registratie: Maart 2003
  • Laatst online: 17:34
nee het komt door dit:

http://fiddler2.com/blog/...ing-fiddler-fixes-my-app-

HTTPWebRequest

The most common fault which is “fixed” by Fiddler concerns .NET applications which successfully complete a few HTTP or HTTPS requests but then “hang” and refuse to send any more, or begin to send requests very slowly and serially, even when requests are made on parallel threads.

When the developer starts using Fiddler to debug the traffic, the problem goes away entirely.

In these cases, the problem always turns out to be that the developer called the GetResponseStream() method but failed to subsequently call Close() on the resulting object. The consequence is that .NET keeps the object alive indefinitely, which causes subsequent requests to eventually block on the default connections-per-host limit. I haven’t stepped into the System.NET code myself, but my guess is that running Fiddler mitigates this problem because .NET enforces a higher limit for proxy connections.

Ik gebruik dan webclient maar die gebruikt ook een stream die ik niet goed deed Close()


ik snap alleen dit niet, een Stream moet uitgelezen door een StreamReader. Maar stel ik wil steeds van pagina wisselen dan moet ik deze een nieuwe StreamReader aanmaken??


Als ik bv 1 pagina wil bezoeken en uitlezen gebruik ik dit:
code:
1
2
3
4
5
6
            Dim data As Stream = myWebClient.OpenRead("https://member.xxx.com/session/step1")
            Dim reader As New StreamReader(data)
            Dim s As String
            s = reader.ReadToEnd()
            reader.close()
            data.close()

en als ik dan een 2e pagina wil openen en uitlezen gebruikte ik dit (omdat ik niet weet hoe ik reader moet hergebruiken?)

code:
1
2
3
4
            data As Stream = myWebClient.OpenRead("https://member.xxx.com/session/step2")
            Dim reader2 As New StreamReader(data)

            s = reader2.ReadToEnd()


dus ik ga van ellende maar een 2e streamreader openen?? Dat moet toch niet nodig zijn? Maar ik weet niet hoe ik reader nogmaals moet toewijzen aan data?

  • Merethil
  • Registratie: December 2008
  • Laatst online: 22:17
Je kan toch het object uit de eerste reader opslaan in een random variabele en daarna verdergaan met je stream die je opnieuw initialiseert (en dus eerst flushed, dan closed en dan weer aanmaakt zodat hij goed leeg is) en die weer je volgende pagina inleest?

Dit is vrij logisch, je gaat geen talloze pagina's in één streamreader gooien, dat maakt het object veel te groot als hij niet goed geleegd wordt.

Volgens mij (In C# is het zo) moet je gewoon de tweede keer weer

code:
1
Dim reader As New StreamReader(data)


doen, dan zou de compiler het zo in elkaar moeten zetten dat hij gewoon opnieuw aangemaakt wordt.

[ Voor 21% gewijzigd door Merethil op 17-06-2013 20:28 ]