Haskell Proxy Post请求

时间:2015-12-15 16:17:33

标签: haskell proxy

我有以下代码使用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

但如何使用代理发布帖子请求?我不懂。请帮帮我!

1 个答案:

答案 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"

......你会很好。