Na veel proberen en zelf zoeken weet ik het niet meer.
Ik heb een programma en dat haalt data op van een website maar doet ook 1 post ernaar (login) dit werkt allemaal feilloos maar als de verbinding traag of brak (torrent als vb) is dan wilt ie wel eens vast lopen op geen response, zelfs geen timeout (wat wel soms werkt, deze staat trouwens op 10s).
Dus om het kort als overzicht te maken:
1. haal een pagina op om te zien of ik wel kan inloggen zoja ga verder anders exit
2. ga naar de inlog pagina en login (webform)
3. gebruik de redirect dat je terug krijgt
4. Zie welk abbo je hebt en navigeer naar de juiste pagina
5. haal daar de data op en sluit alles terug af (+gc.collect)
6. wacht minimum 1 minuut voor dat de gebruiker terug kan verversen (=menu.enable=false)
Als je dus te snel terug een verbinding aanvraagt gaat ie al bij stap 1 in lock (hij stopt ermee, maar blijft wel draaien zonder fout melding), door te wachten op een response (lijn 35), dit is al grotendeels opgelost met de timeout, maar vandaag had ie het weer (torrent stond nog open).
Wat ik dus al geprobeerd heb is dus met die timout te verminderen en op 10s is dat doenbaar maar toch blijft ie soms hangen.
Nog iemand een idee wat er verkeerd gaat?
Ik heb een programma en dat haalt data op van een website maar doet ook 1 post ernaar (login) dit werkt allemaal feilloos maar als de verbinding traag of brak (torrent als vb) is dan wilt ie wel eens vast lopen op geen response, zelfs geen timeout (wat wel soms werkt, deze staat trouwens op 10s).
Dus om het kort als overzicht te maken:
1. haal een pagina op om te zien of ik wel kan inloggen zoja ga verder anders exit
2. ga naar de inlog pagina en login (webform)
3. gebruik de redirect dat je terug krijgt
4. Zie welk abbo je hebt en navigeer naar de juiste pagina
5. haal daar de data op en sluit alles terug af (+gc.collect)
6. wacht minimum 1 minuut voor dat de gebruiker terug kan verversen (=menu.enable=false)
Als je dus te snel terug een verbinding aanvraagt gaat ie al bij stap 1 in lock (hij stopt ermee, maar blijft wel draaien zonder fout melding), door te wachten op een response (lijn 35), dit is al grotendeels opgelost met de timeout, maar vandaag had ie het weer (torrent stond nog open).
Wat ik dus al geprobeerd heb is dus met die timout te verminderen en op 10s is dat doenbaar maar toch blijft ie soms hangen.
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
| Function http_request(ByVal Uri As String, Optional ByVal sParameters As String = "", Optional ByVal bUseForm As Boolean = False) As String Dim byteData As Byte() = encoding.GetBytes(sParameters) If Not bUseForm And (sParameters <> "") Then Uri &= IIf(Uri.LastIndexOf("?") > 0, "&", "?") & sParameters Add2Log("Http_request: " & Uri) Dim thePage As String = "" Try Dim postReq As HttpWebRequest = DirectCast(WebRequest.Create(Uri), HttpWebRequest) With postReq .Timeout = 10000 .ServicePoint.ConnectionLeaseTimeout = .Timeout .ServicePoint.MaxIdleTime = 5000 .CookieContainer = tempCookies .Referer = URI_MT_USAGE .UserAgent = "Mozilla/5.0 (Windows; U; " & Environment.OSVersion.ToString & "; ru; rv:1.9.2.3)" .Accept = "text/plain, text/html" .ContentLength = byteData.Length .KeepAlive = false .AllowAutoRedirect = True .ContentType = "application/x-www-form-urlencoded" .Method = "GET" .Proxy = Nothing If bUseForm Then .Method = "POST" Dim postreqstream As Stream = postReq.GetRequestStream() postreqstream.Write(byteData, 0, byteData.Length) Application.DoEvents() postreqstream.Flush() postreqstream.Close() postreqstream.Dispose() End If End With Using postresponse As HttpWebResponse = DirectCast(postReq.GetResponse(), HttpWebResponse) If postresponse.StatusCode = HttpStatusCode.OK Then If Not bCookieSet Then tempCookies.Add(postresponse.Cookies) bCookieSet = True End If Dim postreqreader As New StreamReader(postresponse.GetResponseStream()) thePage = postreqreader.ReadToEnd '-clean up postreqreader.Close() postreqreader.Dispose() postreqreader = Nothing Else thePage = "" Add2Log("HTTP_ERROR_CODE::" & postresponse.StatusCode & "::" & postresponse.StatusDescription) End If postresponse.Close() ' CType(postresponse, IDisposable).Dispose() End Using Catch ex As WebException bTimeOut = True Add2Log("HTTP_REQUEST::Timeout") thePage = "0" & ex.Message Catch ex As Exception Add2Log("HTTP_REQUEST::Error::" & ex.Message) thePage = "Err: " & ex.Message Finally End Try If DEBUG And DEBUG_HTML Then Add2Log(thePage) Return thePage End Function |
Nog iemand een idee wat er verkeerd gaat?
[ Voor 63% gewijzigd door Damic op 23-04-2015 19:34 ]
Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag