Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.ruby > #7167
| From | Robert Klemme <shortcutter@googlemail.com> |
|---|---|
| Newsgroups | comp.lang.ruby |
| Subject | Re: HTTP response question. |
| Date | 2015-12-20 12:03 +0100 |
| Message-ID | <ddng81F9tdU1@mid.individual.net> (permalink) |
| References | <slrnn7cre2.9m0.michael.uplawski@drusus.uplawski.eu> |
On 20.12.2015 09:58, Michael Uplawski wrote:
> In one program, I receive a Content-Length header and am able to resume
> partial downloads, in the second, the Content-Length header appears to
> always be *missing*.
> The program which is always successful is restricted to the retrieval of
> one type of data from two precise web-sites. Put another way: I do not
> know a lot about HTTP and learn much by trial and error (and some hints
> from Mr. Klemm on this newsgroup, of course). Alas, my trials with the
> second program are all futile, so far.
>
> Question: Is it me or is it the responding site? Can I do anything
> better to resume the previously interrupted download?
There is no guarantee that a server will send Content-Length header. As
simple as that. You can check with curl:
HEAD request
$ url='http://www.fosshub.com/IrfanView.html/iview441_setup.exe'
$ curl --head -D headers.txt -o /dev/null "$url"
% Total % Received % Xferd Average Speed Time Time Time
Current
Dload Upload Total Spent Left
Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:--
--:--:-- 0
$ cat headers.txt
HTTP/1.1 200 OK
Date: Sun, 20 Dec 2015 10:57:56 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Set-Cookie: __cfduid=d5dc7775a3bc4742413be867fb87e18ae1450609075;
expires=Mon, 19-Dec-16 10:57:55 GMT; path=/; domain=.fosshub.com; HttpOnly
Vary: Accept-Encoding
X-Powered-By: PHP/5.4.36
Age: 59104
Via: 1.1 varnish
X-Cache: HIT
X-Cache-Hits: 726
Server: cloudflare-nginx
CF-RAY: 257ad444c16b271a-FRA
GET request:
$ curl --get -D headers.txt -o /dev/null "$url"
% Total % Received % Xferd Average Speed Time Time Time
Current
Dload Upload Total Spent Left
Speed
100 46352 0 46352 0 0 114k 0 --:--:-- --:--:-- --:--:--
114k
$ cat headers.txt
HTTP/1.1 200 OK
Date: Sun, 20 Dec 2015 10:58:42 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: __cfduid=da523a3a1942bb307a1e7ed6f847ee36a1450609122;
expires=Mon, 19-Dec-16 10:58:42 GMT; path=/; domain=.fosshub.com; HttpOnly
Vary: Accept-Encoding
X-Powered-By: PHP/5.4.36
Age: 59151
Via: 1.1 varnish
X-Cache: HIT
X-Cache-Hits: 727
Server: cloudflare-nginx
CF-RAY: 257ad5684e292684-FRA
Note, there is some line wrapping interfering but you can try out yourself.
Regarding your code: first thing you should probably do is to check the
HTTP status code to avoid downloading a HTML error page for the binary
that you are expecting.
You could also use Mechanize to take care of session and cookie handling.
Cheers
robert
--
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/
Back to comp.lang.ruby | Previous | Next — Previous in thread | Next in thread | Find similar
HTTP response question. Michael Uplawski <michael.uplawski@uplawski.eu> - 2015-12-20 09:58 +0100
Re: HTTP response question. Robert Klemme <shortcutter@googlemail.com> - 2015-12-20 12:03 +0100
Re: HTTP response question. Michael Uplawski <michael.uplawski@uplawski.eu> - 2015-12-24 08:46 +0100
Re: HTTP response question. Michael Uplawski <michael.uplawski@uplawski.eu> - 2015-12-20 12:40 +0100
Re: HTTP response question. Robert Klemme <shortcutter@googlemail.com> - 2015-12-20 14:12 +0100
Re: HTTP response question. Michael Uplawski <michael.uplawski@uplawski.eu> - 2015-12-21 08:09 +0100
Re: HTTP response question. Robert Klemme <shortcutter@googlemail.com> - 2015-12-22 11:55 +0100
csiph-web