Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Haskell';s req web刮片库_Haskell - Fatal编程技术网

用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>