我有以下代码使用GET请求的代理:
import Control.Applicative ((<$>))
import Data.Maybe (fromJust)
import Network.Browser
import Network.HTTP
import Network.HTTP.Proxy (parseProxy)
main = do
rsp <- browse $ do
setProxy . fromJust $ parseProxy "127.0.0.1:8118"
request $ getRequest "http://www.google.com"
print $ rspBody <$> rsp
这个用于Post,但没有代理:
main = do
r <- post "http://www.geocodeip.com" ["IP" := Data.ByteString.Lazy.Char8.pack "79.212.82.103"]
html <- r ^. responseBody
print html
但如何使用代理发布帖子请求?我不懂。请帮帮我!
答案 0 :(得分:3)
如果你跟踪你正在做的事情,这很简单。
我们需要使用request
,但要为其提供POST请求而不是GET请求。为了做到这些,我们使用Hackage告诉我们的postRequestWithBody
参数
postRequestWithBody :: String | URL to POST to
-> String | Content-Type of body
-> String | The body of the request
-> Request_String | The constructed request
因此请将request $ getRequest "http://www.google.com"
替换为:
request $ postRequestWithBody "http://www.geocodeip.com/" "application/x-www-form-urlencoded" "IP=79.212.82.103"
......你会很好。