Difference between revisions of "Cookbook/Network programming"
< Cookbook
Jump to navigation
Jump to search
(add browser + proxy example) |
|||
Line 13: | Line 13: | ||
putStrLn contents |
putStrLn contents |
||
hClose h |
hClose h |
||
+ | </haskell> |
||
+ | |||
+ | The following example do a POST via a proxy |
||
+ | |||
+ | <haskell> |
||
+ | 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 |
||
</haskell> |
</haskell> |
Revision as of 04:56, 25 March 2010
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