[HTTP] Header meesturen om pic te downloaden

Pagina: 1
Acties:
  • 122 views sinds 30-01-2008
  • Reageer

  • iznogood
  • Registratie: September 2001
  • Niet online
Ik ben in VB bezig om een programma te schrijven dat foto's kan downloaden. Omdat niet alle webservers op mijn simpele GET url reageren ben ik een uitgebreidere header aan het meesturen:

code:
1
2
3
4
5
GET /FSJ/rigs/johns-80-Cherokee/Grille-Test/grille-test-5.jpg Http1.1
Host: www.wagoneers.com
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png,
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0)
Connection: close


Deze bouw ik als volgt op:

code:
1
2
3
4
5
strCommand = "GET " + strWebPage + " Http1.1" + vbCrLf
strCommand = strCommand + "Host: " + HHost + vbCrLf
strCommand = strCommand + "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png," + vbCrLf
strCommand = strCommand + "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0)" + vbCrLf
strCommand = strCommand + "Connection: close" & vbCrLf


Op een of andere manier wordt er nu geen enkel bestand meer naar mij toegezonden. Ik heb de RFC van HTTP raadgepleegd, google, enz, maar zonder resultaat. Wie kan mij helpen?

Just as Good


  • Osiris
  • Registratie: Januari 2000
  • Niet online
Het is sowieso GET /filename HTTP/1.1

Al weet ik niet of dat dé oplossing is, je zou 't kunnen proberen...

En om de webserver duidelijk te maken dat je 'klaar' bent met headers sturen moet je 2x een CRLF, maar misschien dat die "& vbCrLf" achteraan daar voor zorgt, dat weet ik niet.

[ Voor 44% gewijzigd door Osiris op 06-02-2006 23:44 ]


  • pistole
  • Registratie: Juli 2000
  • Laatst online: 11-04 23:02

pistole

Frutter

waarom het wiel opnieuw uitvinden als je al IE objecten, en -beter nog- WinHTTP tot je beschikking hebt?

Ik frut, dus ik epibreer


  • iznogood
  • Registratie: September 2001
  • Niet online
pistole schreef op maandag 06 februari 2006 @ 23:45:
waarom het wiel opnieuw uitvinden als je al IE objecten, en -beter nog- WinHTTP tot je beschikking hebt?
Ik heb deze reeds geprobeerd, het probleem is dat op het moment dat ik deze gebruik moet wachten met andere commando's totdat het downloaden klaar is.
Osiris schreef op maandag 06 februari 2006 @ 23:43:
Het is sowieso GET /filename HTTP/1.1

Al weet ik niet of dat dé oplossing is, je zou 't kunnen proberen...

En om de webserver duidelijk te maken dat je 'klaar' bent met headers sturen moet je 2x een CRLF, maar misschien dat die "& vbCrLf" achteraan daar voor zorgt, dat weet ik niet.
HTTP/1.1 heeft geen enkel effect.. wel bedankt voor het wijzen op die fout :) Die VbCrLf is hetzelfde als de CRLF die jij bedoeld.

[ Voor 49% gewijzigd door iznogood op 06-02-2006 23:49 ]

Just as Good


  • pistole
  • Registratie: Juli 2000
  • Laatst online: 11-04 23:02

pistole

Frutter

iznogood schreef op maandag 06 februari 2006 @ 23:48:
Ik heb deze reeds geprobeerd, het probleem is dat op het moment dat ik deze gebruik moet wachten met andere commando's totdat het downloaden klaar is.
Niet waar.

je kan in bijvoorbeeld in de class MSXML.XMLHTTPRequest ("Microsoft XML v.x")
Visual Basic:
1
Sub open(bstrMethod As String, bstrUrl As String, [varAsync], [bstrUser], [bstrPassword])

de parameter varAsync gebruiken om aan te geven dat je asynchroon wilt werken. Hiermee gaat je programma dus 'verder', en kan je pollen (of wellicht een event gebruiken).

[ Voor 5% gewijzigd door pistole op 06-02-2006 23:55 ]

Ik frut, dus ik epibreer


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
pistole schreef op maandag 06 februari 2006 @ 23:54:
[...]
Niet waar.

je kan in bijvoorbeeld in de class MSXML.XMLHTTPRequest ("Microsoft XML v.x")
Visual Basic:
1
Sub open(bstrMethod As String, bstrUrl As String, [varAsync], [bstrUser], [bstrPassword])

de parameter varAsync gebruiken om aan te geven dat je asynchroon wilt werken. Hiermee gaat je programma dus 'verder', en kan je pollen (of wellicht een event gebruiken).
Psies. Als je early binding gebruikt (dus een reference "mee-compilen") kun je gewoon events gebruiken. Gebruik je late binding (als in "CreateObject") dan kun je pollen naar de .state (ofzo...) van 't ding.

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


  • iznogood
  • Registratie: September 2001
  • Niet online
RobIII schreef op maandag 06 februari 2006 @ 23:57:
[...]

Psies. Als je early binding gebruikt (dus een reference "mee-compilen") kun je gewoon events gebruiken. Gebruik je late binding (als in "CreateObject") dan kun je pollen naar de .state (ofzo...) van 't ding.
K zit nog met VB6 te werken :(

Met welke ( minimaal benodigde ) HTTP commando's krijg ik iedere webserver zo ver om mij een bestand te sturen ? Ik blijf het toch nog maar even op deze manier doen.

[ Voor 23% gewijzigd door iznogood op 07-02-2006 00:05 ]

Just as Good


  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
pistole schreef op maandag 06 februari 2006 @ 23:45:
waarom het wiel opnieuw uitvinden als je al IE objecten, en -beter nog- WinHTTP tot je beschikking hebt?
Waarom wordt er altijd gezegd dat je het wiel opnieuw aan het uitvinden bent als je een keer zelf code schrijft. Twee tellen langer nadenken en kom tot de conclussie dat de persoon er misschien wat van wil leren.

Ik krijg meestal meer voldoening als ik zelf de code uitgepuzzeld heb dan als ik reeds bestaande code gebruik en die nalees. En natuurlijk geld dit niet voor onderwerpen waarvan ik weet dat ik die al begrijp of 100 maal gecodeerd heb.

Verders ook niet kwaad bedoeld maar zelf schrijven/leren werkt bij mij beter dan bestaande code overnemen. Daarnaast werk je dan ook nog aan je typeskills, je indentering en allemaal andere skills die je niet meekrijgt van het copy/pasten.

Nog even toevoegen. Ik bedoel dus niet dat ik nooit code van anderen in mijn code gebruik. Als ik ergens nuttige code, klasses of objecten in kan gebruiken zal ikd atz eker doen. Maarz elf code schrijven om de stof nog beter te begrijpen zal ik zeker niet nalaten.

[ Voor 14% gewijzigd door seamus21 op 07-02-2006 00:09 . Reden: typo's, zinsopbouw, slotwoord ]

Always shoot for the moon. Even if you miss you will land among the stars...


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
iznogood schreef op dinsdag 07 februari 2006 @ 00:00:
[...]

K zit nog met VB6 te werken :(

Met welke ( minimaal benodigde ) HTTP commando's krijg ik iedere webserver zo ver om mij een bestand te sturen ? Ik blijf het toch nog maar even op deze manier doen.
Daar heb ik het ook over ;)
seamus21 schreef op dinsdag 07 februari 2006 @ 00:05:
Waarom wordt er altijd gezegd dat je het wiel opnieuw aan het uitvinden bent als je een keer zelf code schrijft. Twee tellen langer nadenken en kom tot de conclussie dat de persoon er misschien wat van wil leren.
Als je je 2 tellen verdiept in de MSWinsock implementatie van VB6 (en dan heb ik het over de OCX) zie je meteen dat dat not the way to go is. Dan ben je niet alleen het wiel opnieuw aan het uitvinden maar ook nog eens met alleen maar vloeistoffen als beschikbare materialen :D
seamus21 schreef op dinsdag 07 februari 2006 @ 00:05:
Ik krijg meestal meer voldoening als ik zelf de code uitgepuzzeld heb dan als ik reeds bestaande code gebruik en die nalees. En natuurlijk geld dit niet voor onderwerpen waarvan ik weet die ik dat al snap of 100 maal gecodeerd heb.
Van WinHTTP kun je net zo goed leren :? Alleen zit je niet meer op laag 4 ofzo van je OSI model te devven :P
* En ja, die "laag 4" is een geintje. Ik ken mijn OSI nog ;)

[ Voor 64% gewijzigd door RobIII op 07-02-2006 00:11 ]

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


  • iznogood
  • Registratie: September 2001
  • Niet online
seamus21 schreef op dinsdag 07 februari 2006 @ 00:05:
[...]

Waarom wordt er altijd gezegd dat je het wiel opnieuw aan het uitvinden bent als je een keer zelf code schrijft. Twee tellen langer nadenken en kom tot de conclussie dat de persoon er misschien wat van wil leren.

Ik krijg meestal meer voldoening als ik zelf de code uitgepuzzeld heb dan als ik reeds bestaande code gebruik en die nalees. En natuurlijk geld dit niet voor onderwerpen waarvan ik weet die ik dat al snap of 100 maal gecodeerd heb.

Verders ook niet kwaad bedoeld maar zelf schrijven/leren werkt bij mij beter dan bestaande code overnemen. Daarnaast werk je dan ook nog aan je typeskills, je indentering en allemaal andere skills die je niet meekrijgt van het copy/pasten.
Totally agree _/-\o_
Ben ook maar een beginner hoor ;)

[ Voor 10% gewijzigd door iznogood op 07-02-2006 00:08 ]

Just as Good


  • Osiris
  • Registratie: Januari 2000
  • Niet online
iznogood schreef op maandag 06 februari 2006 @ 23:48:
[...]

Die VbCrLf is hetzelfde als de CRLF die jij bedoeld.
Snap ik, maar doe je hem op 't laatst ook tweemaal?

  • iznogood
  • Registratie: September 2001
  • Niet online
RobIII schreef op dinsdag 07 februari 2006 @ 00:06:
Als je je 2 tellen verdiept in de MSWinsock implementatie van VB6 (en dan heb ik het over de OCX) zie je meteen dat dat not the way to go is. Dan ben je niet alleen het wiel opnieuw aan het uitvinden maar ook nog eens met alleen maar vloeistoffen als beschikbare materialen :D
Ik vind winsock wel aardig voor "basic stuff", maar zoals ik al zei ben ik nog maar een beginner... ik heb wel een hekel aan de ocx controls, maar ik heb voor de winsock een uitzondering gemaakt. Maar wat bedoel jij dan, de winsock API gebruiken oid? Leg mij is de Pro's en con's uit van de verschillende technieken...
Osiris schreef op dinsdag 07 februari 2006 @ 00:12:
[...]

Snap ik, maar doe je hem op 't laatst ook tweemaal?
Heb beide manieren geprobeerd, maar maakt geen verschil... Ik heb het op verschillende webservers uitgeprobeerd, bij sommige lukt het wel, bij anderen weer niet.

[ Voor 21% gewijzigd door iznogood op 07-02-2006 00:14 ]

Just as Good


  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
RobIII schreef op dinsdag 07 februari 2006 @ 00:06:
[...]

Daar heb ik het ook over ;)

[...]

Als je je 2 tellen verdiept in de MSWinsock implementatie van VB6 (en dan heb ik het over de OCX) zie je meteen dat dat not the way to go is. Dan ben je niet alleen het wiel opnieuw aan het uitvinden maar ook nog eens met alleen maar vloeistoffen als beschikbare materialen :D


[...]

Van WinHTTP kun je net zo goed leren :? Alleen zit je niet meer op laag 4 ofzo van je OSI model te devven :P
Ja maar als iemand constant zoekt naar oplossingen in bestaande objecten loop je volgens mij een deut belangrijke proggerervaring mis. Verders helemaal mee eens als er al ergens mooie code van is zeker gebruiken mits je de materie begrijpt. Althans dat tracht ik.

Je kan ook bergen objecten gebruiken en aan elkaar knopen. Een mooi werkend programma hebben maar uiteindelijk niks van de materie begrijpen.

Always shoot for the moon. Even if you miss you will land among the stars...


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
iznogood schreef op dinsdag 07 februari 2006 @ 00:13:
[...]

Ik vind winsock wel aardig voor "basic stuff", maar zoals ik al zei ben ik nog maar een beginner... ik heb wel een hekel aan de ocx controls, maar ik heb voor de winsock een uitzondering gemaakt. Maar wat bedoel jij dan, de winsock API gebruiken oid? Leg mij is de Pro's en con's uit van de verschillende technieken...
Dude, trust me :D Als beginner wil je ver uit de buurt blijven van de Winsock API. With all due respect makker, maar dat is niet voor beginners weggelegd. Er zijn op www.vbip.com zat classes te vinden die de Winsock API (trachten te) wrappen en dat lukt ze aardig*. Daar zou je eens kunnen kijken. En anders zou ik lekker terugvallen op WinHTTP of een ander (3rd party) component.

Dat je het verschil tussen late en early binding niet "kent" geeft voor mij genoeg reden om te denken dat je nog niet toe bent aan dit soort "hardcore-stuff" (en ZO hardcore is het nou ook weer niet). Ik bedoel het dus niet lullig ofzo hoor ;)

Laat ik het anders formuleren: Wil je deze week een einde breien aan je projectje? Of medio 2007? :P

* Als ik het me correct herinner. Is al lang, lang geleden dat ik daar kwam...

[ Voor 17% gewijzigd door RobIII op 07-02-2006 00:19 ]

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


  • iznogood
  • Registratie: September 2001
  • Niet online
RobIII schreef op dinsdag 07 februari 2006 @ 00:16:
[...]

Dude, trust me :D Als beginner wil je ver uit de buurt blijven van de Winsock API. With all due respect makker, maar dat is niet voor beginners weggelegd. Er zijn op www.vbip.com zat classes te vinden die de Winsock API (trachten te) wrappen en dat lukt ze aardig. Daar zou je eens kunnen kijken. En anders zou ik lekker terugvallen op WinHTTP of een ander (3rd party) component.

Dat je het verschil tussen late en early binding niet "kent" geeft voor mij genoeg reden om te denken dat je nog niet toe bent aan dit soort "hardcore-stuff" (en ZO hardcore is het nou ook weer niet). Ik bedoel het dus niet lullig ofzo hoor ;)

Laat ik het anders formuleren: Wil je deze week een einde breien aan je projectje? Of medio 2007? :P
Haha :) 2007 is prima hoor ... Ik heb visual basic nooit echt geleerd, maar ik ben vooral aan de oppervlakte gebleven ( the stuff they teach you in books ). Programmeren is voor mij gewoon een leuke hobby en niet mijn beroep, ik begrijp wel wat van low/high level programmeren af maar ik ben tot nu toe redelijk aan de oppervlakte gebleven m.u.v. de basis van de Api's af dan. Uiteindelijk wil ik van de ocx'en e.d. afblijven en daarvoor mijn eigen code schrijven omdat ik denk dat het de performance van het programma niet ten goede komt...

Just as Good


  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
code:
1
2
3
4
5
6
7
8
9
10
11
GET /files/1.bmp HTTP/1.1
Host: 127.0.0.1:8079
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en,nl;q=0.7,en-us;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
If-Modified-Since: 944568000000
Cache-Control: max-age=0


Hierboven een voorbeeld van een request die mijn in java geschreven webserver ontvangt als ik 1.bmp opvraag in mozilla. Hieronder dan nog de response die mijn webserver stuurt:

code:
1
2
3
4
5
6
HTTP/1.1 200 OK
Server:Diagnostic Webserver/0.1
Date:di, 07 feb 2006 00:27:04 CET
Content-Type:text/html
Content-Length:26582
Last-Modified:944568000000


Misschien heb je er wat aan. Verders nog even. Deze request en response zijn verre van compleet :)

Always shoot for the moon. Even if you miss you will land among the stars...


  • BOOTZ
  • Registratie: Maart 2001
  • Laatst online: 17-03 09:38
Wel vreemd dat je met die code niks gedownload krijgt, het voldoet zo te zien netjes aan de http-standaard. Krijg je wel een reply terug (met een HTTP-errorcode), of gebeurt er helemaal niks nadat je dit verstuurd hebt?

Dit is iig code die ik in een project gebruikt heb, die werkt bij mij altijd prima:
Visual Basic:
1
2
3
4
5
 req = "GET " & ServerDir & PageName & " HTTP/1.1" & vbCrLf & _
 "Host: " & ServerName & vbCrLf & _
 "Connection: Close" & vbCrLf & _
 "Authorization: Basic " & sBase64Encode(User & ":" & Pass) & vbCrLf & _
 vbCrLf

Deze maakt toevallig ook gebruik van HTTP-authentication

Hierbij moet je voor de variabelen denken aan:
Visual Basic:
1
2
3
ServerDir = "/cgi-bin/"
PageName = "executecommand.cgi"
ServerName = "www.mijndomeinnaam.nl"


Daarnaast zou het nog kunnen dat de webserver het niet eens is met je accept-regel. Als het bestand niet van een van de types is die daar staan stuurt ie het ook niet, al zou je dan wel een foutmelding moeten krijgen.

Mocht je wel iets binnenkrijgen, denk je dan ook aan de transfer-encoding? Als die 'chunked' is moet je de chunks wel netjes uitlezen en verwerken, anders raakt je plaatje waarschijnlijk corrupt.

[ Voor 17% gewijzigd door BOOTZ op 07-02-2006 10:18 ]

Maak je eigen poll


  • iznogood
  • Registratie: September 2001
  • Niet online
BOOTZ schreef op dinsdag 07 februari 2006 @ 10:16:
Wel vreemd dat je met die code niks gedownload krijgt, het voldoet zo te zien netjes aan de http-standaard. Krijg je wel een reply terug (met een HTTP-errorcode), of gebeurt er helemaal niks nadat je dit verstuurd hebt?

Dit is iig code die ik in een project gebruikt heb, die werkt bij mij altijd prima:
Visual Basic:
1
2
3
4
5
 req = "GET " & ServerDir & PageName & " HTTP/1.1" & vbCrLf & _
 "Host: " & ServerName & vbCrLf & _
 "Connection: Close" & vbCrLf & _
 "Authorization: Basic " & sBase64Encode(User & ":" & Pass) & vbCrLf & _
 vbCrLf

Deze maakt toevallig ook gebruik van HTTP-authentication

Hierbij moet je voor de variabelen denken aan:
Visual Basic:
1
2
3
ServerDir = "/cgi-bin/"
PageName = "executecommand.cgi"
ServerName = "www.mijndomeinnaam.nl"


Daarnaast zou het nog kunnen dat de webserver het niet eens is met je accept-regel. Als het bestand niet van een van de types is die daar staan stuurt ie het ook niet, al zou je dan wel een foutmelding moeten krijgen.

Mocht je wel iets binnenkrijgen, denk je dan ook aan de transfer-encoding? Als die 'chunked' is moet je de chunks wel netjes uitlezen en verwerken, anders raakt je plaatje waarschijnlijk corrupt.
Dit is een voorbeeld van een van mijn huidige headers:
code:
1
2
3
4
5
GET /art/oskills/art/test2.JPG HTTP/1.1
Host: ergometrics.org
Accept: text/html, text/plain, image/gif, image/jpeg, image/png, */*; q=0.01
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0)
Connection: Close


Als ik HTTP/1.1 op de huidige plaats neerzet dan krijg ik helemaal geen results meer. Als ik naar mijn downloads kijk dan zie ik veel 0 size files staan, dus ik vermoed dat de webserver deze niet naar me op wil sturen.

Om het bestand in elkaar te zetten open ik een binair bestand en met dataarival zet ik de binnengekomen data in het bestand totdat de verbinding wordt verbroken ofdat ik zelf een timeout genereer. Met Peekdata check ik of de data die binnenkomt binair is of HTML/Plain text.

Just as Good


  • iznogood
  • Registratie: September 2001
  • Niet online
Ok, ik heb de downloadcode herschreven ( beter, natuurlijk ) :) Er is jammergenoeg geen verbetering opgetreden. Dus zijn er nog een paar mogelijkheden die er voor zorgen dat de download niet goed gaat:

1.De header die ik verstuur is ergens niet ok:
code:
1
2
3
4
5
GET /main/images/animation/test.gif HTTP/1.1
Host: 194.177.200.5:80
Accept: text/html, text/plain, image/gif, image/jpeg, image/png, */*; q=0.01
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0)
Connection: Close
na deze headers komen natuurlijk 2 CRLF's

2.Ik sla geen binaire info op in de picture. Wat ik doe is checken op Left$(binnenkomende data,4)="HTTP" als dat het geval is dan is het een header, anders opslaan als binaire data in het geopende bestand.

3.De binnenkomende data sluit niet aan op de vorige binnenkomende data. Iedere keer bij een Dataarrival laat ik de data ( mits het geen header is ) toevoegen aan het huidig geopende bestand.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Sub Sock_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim WebData As String
Dim RcvBuf() As Byte
Dim BTotal

BTotal = Sock(Index).BytesReceived
ReDim RcvBuf(BTotal)
Dim TmpData As Data
On Error Resume Next
Sock(Index).PeekData WebData, vbString

Sock(Index).GetData RcvBuf, vbByte + vbArray, BTotal

If Left$(WebData, 9) = "<!DOCTYPE" Or InStr(1, WebData, "<html>") Then
    Close FileSlot(Index): Sock(Index).Close
End If

If Left$(WebData, 4) <> "HTTP" Then
    Put FileSlot(Index), , RcvBuf()
Else
    Debug.Print WebData
End If


4.Ik moet een aantal codings replacen ( bv : %20 met spatie ) in urls

Misschien dat er nog meer mogelijkheden zijn die ik over het hoofd zie, of misschien heeft er iemand de oplossing?

[ Voor 5% gewijzigd door iznogood op 07-02-2006 22:06 ]

Just as Good


  • matthijsln
  • Registratie: Augustus 2002
  • Laatst online: 09-04 14:46
Wat tips:

- Installeer een netwerk sniffer, zoals bijvoorbeeld Ethereal.

- Volg de RFC exact, tot op de letter!

- Probeer eens wat requests zelf met bijvoorbeeld telnet of PuTTY.

- Gebruik HTTP/1.0, zodat je niet alle 1.1 responses hoeft te ondersteunen.

- Check de status reponse van de server, dus of je een 404 krijgt of iets dergelijks (dit is bij je laatste voorbeeld van je request het geval).

- De data die je van een server ontvangt krijg je in stukjes. Neem nooit aan dat je in een DataArrival event of iets dergelijks een min of meer compleet stuk van de response hebt. Je code moet ook werken indien je de data een byte per keer ontvangt!

- Kijk naar de content-type response header om te kijken of je een plaatje krijgt in plaats van met InStr.

Tja, ik kan nog wel een tijdje doorgaan maar ik laat het even hierbij...

[ Voor 5% gewijzigd door matthijsln op 07-02-2006 22:48 ]


Verwijderd

Als het geen programmeerfout is, kan het net zo goed e.o.a. vage check op de server zijn.

Dit stuurt/ontvangt Mozilla Firefox (LiveHTTPHeaders extension):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
http://www.wagoneers.com/FSJ/rigs/johns-80-Cherokee/Grille-Test/grille-test-5.jpg

GET /FSJ/rigs/johns-80-Cherokee/Grille-Test/grille-test-5.jpg HTTP/1.1
Host: www.wagoneers.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; nl; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: nl,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

HTTP/1.x 200 OK
Date: Tue, 07 Feb 2006 22:36:28 GMT
Server: Apache/2.0.50 (Linux/SUSE)
Last-Modified: Tue, 25 Jan 2005 07:33:18 GMT
Etag: "994093-72618-549b8b80"
Accept-Ranges: bytes
Content-Length: 468504
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: image/jpeg
----------------------------------------------------------

[ Voor 4% gewijzigd door Verwijderd op 07-02-2006 23:21 ]

Pagina: 1