Personal tools

Cookbook/Network programming

From HaskellWiki

< Cookbook
Revision as of 20:37, 26 May 2011 by JasonDagit (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

The following example makes use of the Network and System.IO libraries to open a socket connection to Google and retrieve the Google home page.

import Network
import System.IO
 
main = withSocketsDo $ do
    h <- connectTo "www.google.com" (PortNumber 80)
    hSetBuffering h LineBuffering
    hPutStr h "GET / HTTP/1.1\nhost: www.google.com\n\n"
    contents <- hGetContents h
    putStrLn contents
    hClose h

The following example POSTs via a proxy.

import Network.URI
import Network.HTTP
import Network.Browser
 
Just pollUri = parseURI "http://example.com/question?life&universe&everything" -- WARNING: only works with hardcoded arguments like this one
body = "answer=42"
headers = [Header HdrContentType "application/x-www-form-urlencoded",
           Header HdrContentLength (show . length $ body)]
 
pollRq = Request {
 rqURI = pollUri, rqMethod = POST,
 rqHeaders = headers,
 rqBody = body
}
 
-- Default polipo setting
p = Proxy "localhost:8118" Nothing
 
main = browse $ do
     setProxy p
     request pollRq