[Haskell-cafe] Trying to write a very simple HTTP Client

Eric eeoam at ukfsn.org
Fri May 23 12:19:32 EDT 2008


Robert Greayer wrote:
> --- Eric <eeoam at ukfsn.org> wrote:
>
>   
>> Hi all,
>>
>> I've written the following program to connect to a
>> submit an HTTP GET 
>> request to a server and print the response:
>>
>> module Main where
>>
>> import Network
>> import System.IO
>>
>> main = withSocketsDo go
>>
>> go = do putStrLn "Connecting..."
>>             out <- connectTo "haskell.org"
>> (PortNumber 80)
>>             hPutStrLn out "GET /\r"
>>             hPutStrLn out "Host: haskell.org\r"
>>             hPutStrLn out "\r"
>>             cs    <- hGetLine out
>>             hClose out
>>             print cs
>>
>> When I run the program, however, I get the following
>> error:
>>
>> HTTPClient: <socket: 1872>: hGetLine: end of file
>>
>> Can anyone see what's wrong?
>>
>>
>> E.
>>     
>
> Try calling 'hFlush out' prior to the call to
> hGetLine.   I believe the output to the socket is
> buffered, so the receiver isn't seeing your GET
> request, and eventually closes the connection on its
> end, leading to the EOF on  the hGetLine.
>
>   
That works! Thank you!

Eric M.



More information about the Haskell-Cafe mailing list