用Haskell';s req web刮片库
我无法理解此代码中发生的错误:用Haskell';s req web刮片库,haskell,Haskell,我无法理解此代码中发生的错误: import Network.URI.Encode as EN downloadFile :: (MonadHttp m) => String -> m () downloadFile url = do traceShowM (T.pack url) -- Pull them into memory contents <- req GET (https (T.pack $ EN.encode url)) NoReqB
import Network.URI.Encode as EN
downloadFile :: (MonadHttp m) => String -> m ()
downloadFile url = do
traceShowM (T.pack url)
-- Pull them into memory
contents <- req GET (https (T.pack $ EN.encode url)) NoReqBody bsResponse mempty
-- debug read file wrote file etc
-- Get the filename itself
let fileName = head $ reverse $ T.splitOn "/" (T.pack url)
您几乎肯定不想调用
EN.encode
。可能只是删除它。您没有正确构建Url
。从
我们发现Url
可以通过几种方式构造
https“lehd.ces.census.gov”
/“数据”
/“矿脉”
/“矿脉7”
/“ak”
/“od”
/~“ak_od_aux_JT00_2003.csv.gz”
——不要实际使用fromJust,这只是一个示例
fst。fromJust$parseUrlHttps“https://lehd.ces.census.gov/data/lodes/LODES7/ak/od/ak_od_aux_JT00_2003.csv.gz"
特别是,请注意实际操作:给定一个主机名,它使用HTTPS方案、该主机名和一个空路径构造一个Url
https-someUrlString
将构造一个Url
类似
https://<the fully url-encoded version of someUrlString>
https://
这不是你想要的。当然,但这只会产生一个不同的编码问题:
host=“https:%2F%2Flehd.ces.cess.gov%2Fdata%2Flodes%2FLODES7%2Fak%2Fod%2Fak_od_aux_jtu 2002.csv.gz”
我试过这个:另一个频道的内容“您的主机名有一个路径混入其中,导致从DNS生成一个NXDOMAIN”--正在尝试解决这个问题。
https://<the fully url-encoded version of someUrlString>