-
Book Overview & Buying
-
Table Of Contents
-
Feedback & Rating
Haskell Data Analysis cookbook
By :
A POST request is another very common HTTP server request used by many APIs. We will be mining the University of Virginia directory search. When sending a POST request for a search query, the Lightweight Directory Access Protocol (LDAP) server replies with a web page of search results.
For this recipe, access to the Internet is necessary.
Install the HandsomeSoup CSS selector package, and also install the HXT library if it is not already installed:
$ cabal install HandsomeSoup $ cabal install hxt
import Network.HTTP import Network.URI (parseURI) import Text.XML.HXT.Core import Text.HandsomeSoup import Data.Maybe (fromJust)
myRequestURL = "http://www.virginia.edu/cgi-local/ldapweb"
myRequest :: String -> Request_String
myRequest query = Request {
rqURI = fromJust $ parseURI myRequestURL
, rqMethod = POST
, rqHeaders = [ mkHeader HdrContentType "text/html"
, mkHeader HdrContentLength $ show $ length body ]
, rqBody = body
}
where body = "whitepages=" ++ querymain to run the POST request on a query as follows:main :: IO () main = do response <- simpleHTTP $ myRequest "poon"
html <- getResponseBody response let doc = readString [withParseHTML yes, withWarnings no] html
rows <- runX $ doc >>> css "td" //> getText print rows
Running the code will display all search results relating to "poon", such as "Poonam" or "Witherspoon".
A POST request needs the specified URI, headers, and body. By filling out a Request data type, it can be used to establish a server request.
Refer to the Understanding how to perform HTTP GET requests recipe for details on how to perform a GET request instead.
Change the font size
Change margin width
Change background colour