Haskell:
发出 HTTP 请求

How to: 怎样做?

在Haskell中,你可以使用http-clienthttp-conduit库简单地发送HTTP请求。这里有一个小例子:

import Network.HTTP.Simple

main :: IO ()
main = do
    response <- httpLBS "http://httpbin.org/get"
    putStrLn ("The status code was: " ++
               show (getResponseStatusCode response))
    print (getResponseHeader "Content-Type" response)
    putStrLn (unpack (decodeUtf8 (getResponseBody response)))

运行这段代码,你会得到类似下面的输出:

The status code was: 200
["application/json"]
{
  "args": {}, 
  "headers": {
    ...
  }, 
  "origin": "...", 
  "url": "https://httpbin.org/get"
}

Deep Dive: 深入探索

早在1991年,HTTP协议就已经诞生了,而Haskell在1990年首次发布。随着时间的推移,Haskell社区开发了多个用于发送HTTP请求的库。http-client作为其中之一,提供了一个后端无关的HTTP客户端接口,而http-conduit则在此基础上实现了易用的流处理接口。

虽然Haskell的http-clienthttp-conduit库是发送HTTP请求的常见选择,但还有其他几个库如wreqreq也同样流行,它们提供了不同的抽象级别。

深入实现细节,这些库通常都是基于Haskell的网络底层库实现的,如networksockets库。它们处理底层的TCP/IP连接,确保数据可以在网络中正确传输。

See Also: 另请参阅