当网址包含[]
时,以下代码无效。有人可以告诉我如何逃避它吗?我尝试过对整个网址进行编码,但这并没有帮助。
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并将其粘贴到你的浏览器中,它可以正常工作。
我举起这个例子来说明[]
的问题。当然,它不是Google或其他任何人提供的有效网址。
GHC:7.6.2,Mac OS X(Mavericks)
谢谢!
答案 0 :(得分:2)
我认为urlEncode
对[
和]
没有任何效果,因为它不应该,它们一般不会特别。
然而,您可以使用%5B
和%5D
(source)对其进行编码,因此另一种方法是在您的网址中手动替换[
和]