Download file via http
Kai Meyer
kai at unixlords.com
Tue Dec 13 09:58:57 PST 2011
On 12/13/2011 10:39 AM, Vladimir Panteleev wrote:
> On Tuesday, 13 December 2011 at 17:29:20 UTC, Kai Meyer wrote:
>> I get bytes_needed from the Content-Length header. The I get the
>> correct number of bytes from the Content-Length, bytes_needed gets the
>> right value, but the resulting file isn't right. The file has the
>> right number of bytes, but I appear to have an extra '0a' at the very
>> beginning of the file, but if I do 'ss.getchar()', to get rid of it, I
>> get an exception that there's not enough data in the stream.
>
> In an HTTP request, the headers are separated from the body by an empty
> line. Headers use CR/LF line endings, so the body is always preceded by
> a 0D 0A 0D 0A sequence. It looks like your code is not snipping the last
> 0A.
>
> Where did the getchar method come from? There is no mention of it in
> Phobos. Perhaps you could try the read(out ubyte) method?
http://www.d-programming-language.org/phobos/std_stream.html
Oh, I meant getc(), not getchar(), sorry. It looks like read(out ubyte)
worked on windows.
I'm using ss.readLine() to pull headers from the stream. When the string
returned from ss.readLine() is empty, then I move on to the stream. I'm
going to be using this application on Windows, Linux, and Mac, which is
why I chose D. This feels like I've just entered the newline/carriage
return nightmare. Should I not be using readLine()? Or is there some
generic code that will always work and stick me at the beginning of the
file?
-Kai Meyer
More information about the Digitalmars-d-learn
mailing list