Haskell 从HTTP响应获取头

Haskell 从HTTP响应获取头,haskell,http-conduit,Haskell,Http Conduit,我不知道如何从服务器的响应中获取内容长度头: import Network.HTTP.Conduit main = do headers <- getHeaders "http://fdsfdsfds.fd" --??? this doesn't compile and a wrong way to go head $ filter (\x -> hContentLength (fst x)) headers getHeaders :: S

我不知道如何从服务器的响应中获取内容长度头:

import Network.HTTP.Conduit

main = do 
      headers <- getHeaders "http://fdsfdsfds.fd"

      --??? this doesn't compile and a wrong way to go
      head $ filter (\x -> hContentLength (fst x)) headers

getHeaders :: String -> IO ResponseHeaders
getHeaders url = do
  req <- parseUrl url
  res <- withManager $ httpLbs req
  return $ responseHeaders res
import Network.HTTP.conductor
main=do

headers这是因为
hContentLength
只是一个不区分大小写的字符串,而不是一个函数。你不能应用它

但是,由于
CI a
是任何
Eq a
Eq
实例,因此您只需使用
lookup

getContentLength :: ResponseHeaders -> Maybe ByteString
getContentLength = lookup hContentLength

是否确实发送了内容长度标题?@Seb,这与是否发送无关。这是关于如何检索它的解决方案。
hContentType只是一个不区分大小写的字符串
这意味着什么?在文档中,我看不出它是字符串。@AlexanderSupertramp:是一个
HeaderName
,它是一个
CI ByteString
。顺便说一下,没有“内容处置”头,是吗@AlexanderSupertramp:没有,但是您可以很容易地实现它,只需遵循其他字段的实现即可。但是,您可能需要一个或另一个扩展名(至少
OverloadedStrings
)。