gpt4 book ai didi

haskell - 在 Haskell 中解析 HTTP 请求

转载 作者:行者123 更新时间:2023-12-02 02:06:31 25 4
gpt4 key购买 nike

我应该使用哪个库来解析来自套接字流的 HTTP 请求?我想要一些可以提供惰性 ByteString 的东西,它可能包含部分或多个 HTTP 请求。

我也对类似的响应 HTTP 请求的东西感兴趣(向其传递一个响应对象并获取惰性 ByteString 写入套接字)

编辑以添加更多信息:这个接口(interface)是理想的,但当然不是必需的:

ByteString {- the initial buffer -} -> (Maybe Request, ByteString {- remaining buffer -})

如果是部分请求,可能请求什么都没有,并且 ByteString 与输入相同。

谢谢:-)

最佳答案

要处理这种类型的流数据,当前的解决方案是使用 iteratee 或类似 iteratee 的库之一。 Conduit、Pipes(可能会重命名为代理,因为它可以处理双向数据以及其他独特的优点)、Iteratee、枚举器、iterIO 等。管道库似乎在依赖它的库数量上明显领先。

您应该看看 Conduit section on hackage.haskell.org并在http-conduit尤其。第一个示例获取 http 响应,然后将其写入恒定空间中的文件。

import Data.Conduit.Binary (sinkFile)
import Network.HTTP.Conduit
import qualified Data.Conduit as C

main :: IO ()
main = do
request <- parseUrl "http://google.com/"
withManager $ \manager -> do
Response _ _ _ src <- http request manager
src C.$$+- sinkFile "google.html"

关于haskell - 在 Haskell 中解析 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10100846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com