0

当 URL 包含[]. 有人可以告诉我如何逃脱吗?我曾尝试对整个 URL 进行编码,但这并没有帮助。

import qualified Data.ByteString.Char8 as B
import Network.HTTP.Types.URI
import Text.HandsomeSoup
import Text.XML.HXT.Core

main = do
    -- This URL works (no [])
    let url = "http://www.google.com/search?q=3%2F10%2F14&test0=hello"
    --let urlEnc = B.unpack $ urlEncode True $ B.pack url
    doc <- fromUrl url
    links <- runX $ doc >>> css "a" ! "href"
    mapM_ putStrLn links

如果我将 URL 更改为以下(注意 [0]),它将不起作用。

    let url = "http://www.google.com/search?q=3%2F10%2F14&test[0]=hello"

通过工作,我的意思是当没有链接时我会看到一个链接列表,但当 URL 中有链接时,[]我什么也得不到ghci(进入提示符)[]。但是,如果您复制第二个 URL 并将其粘贴到浏览器中,它就可以正常工作。

我做了这个例子来说明这个问题[]。当然,它不是谷歌或任何东西提供的有效 URL。

GHC:7.6.2,Mac OS X(小牛队)

谢谢!

4

1 回答 1

2

我猜这对它urlEncode没有任何作用[]因为它不应该,它们一般并不特别。

但是,您可以使用%5Band %5D( source ) 对它们进行编码,因此另一种方法是手动替换[and]在您的 url 中。

于 2014-03-11T08:18:19.527 回答