Cookbook/Network programming

From HaskellWiki
< Cookbook
Revision as of 04:56, 25 March 2010 by Hdh (talk | contribs) (add browser + proxy example)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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 do a POST via a proxy

import Network.URI
import Network.HTTP
import Network.Browser

Just pollUri = parseURI "http://example.com/question?life&universe&everything"
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