Difference between revisions of "Cookbook/Network programming"
< Cookbook
Jump to navigation
Jump to search
(add browser + proxy example) |
JasonDagit (talk | contribs) m (fix up some weird formatting issues) |
||
(2 intermediate revisions by one other user not shown) | |||
Line 3: | Line 3: | ||
<haskell> |
<haskell> |
||
− | + | 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 |
|
</haskell> |
</haskell> |
||
− | The following example |
+ | The following example POSTs via a proxy. |
<haskell> |
<haskell> |
||
Line 22: | Line 22: | ||
import Network.Browser |
import Network.Browser |
||
− | Just pollUri = parseURI "http://example.com/question?life&universe&everything" |
+ | Just pollUri = parseURI "http://example.com/question?life&universe&everything" -- WARNING: only works with hardcoded arguments like this one |
body = "answer=42" |
body = "answer=42" |
||
headers = [Header HdrContentType "application/x-www-form-urlencoded", |
headers = [Header HdrContentType "application/x-www-form-urlencoded", |
Latest revision as of 20:37, 26 May 2011
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