- Haskell Data Analysis Cookbook
- Nishant Shukla
- 287字
- 2021-12-08 12:43:33
Learning how to perform HTTP POST requests
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.
Getting ready
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
How to do it...
- Import the following libraries:
import Network.HTTP import Network.URI (parseURI) import Text.XML.HXT.Core import Text.HandsomeSoup import Data.Maybe (fromJust)
- Define the POST request specified by the directory search website. Depending on the server, the following POST request details would be different. Refer to the following code snippet:
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=" ++ query
- Define and implement
main
to run the POST request on a query as follows:main :: IO () main = do response <- simpleHTTP $ myRequest "poon"
- Gather the HTML and parse it:
html <- getResponseBody response let doc = readString [withParseHTML yes, withWarnings no] html
- Find the table rows and print it out using the following:
rows <- runX $ doc >>> css "td" //> getText print rows
Running the code will display all search results relating to "poon"
, such as "Poonam" or "Witherspoon".
How it works...
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.
See also
Refer to the Understanding how to perform HTTP GET requests recipe for details on how to perform a GET request instead.
- Spring 5.0 By Example
- Design Principles for Process:driven Architectures Using Oracle BPM and SOA Suite 12c
- PHP基礎案例教程
- 薛定宇教授大講堂(卷Ⅳ):MATLAB最優化計算
- Haxe Game Development Essentials
- Terraform:多云、混合云環境下實現基礎設施即代碼(第2版)
- C# and .NET Core Test Driven Development
- 詳解MATLAB圖形繪制技術
- Extending Unity with Editor Scripting
- Oracle 12c從入門到精通(視頻教學超值版)
- Android高級開發實戰:UI、NDK與安全
- Spring Web Services 2 Cookbook
- Learning HTML5 by Creating Fun Games
- Mastering Docker(Second Edition)
- Python架構模式:精通基于Python的API設計、事件驅動架構和包管理