Haskell代理Post请求

Haskell代理Post请求,haskell,proxy,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

我有以下代码与代理一起处理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
import-Control.Applicative(())
导入数据。可能(fromJust)
导入网络浏览器
导入网络.HTTP
导入Network.HTTP.Proxy(parseProxy)
main=do

rsp如果你能跟踪你正在做的事情,那就很简单了

我们需要使用
request
,但将POST请求而不是GET请求提供给它。为了实现这些功能,我们使用
postRequestWithBody
,Hackage告诉我们有参数

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"

…你会很好的。

谢谢,很好用。但是@CRDrost您能为https url添加一个“补丁”吗?我在这里找到了一个使用https的hwo示例:但我不知道如何实现它。谢谢,我的意思是我认为这是一个单独的问题,但是这个库显然是以
requestTemplate=parseUrl”开头的https://www.google.com/“
(或其他)然后您将创建一个代理(
{-#语言:重载字符串#-}
向上,然后
myProxy=proxy”127.0.0.1“8118
),然后,您可以使用记录语法和提供的
urlEncodedBody
函数,
request=urlEncodedBody[(“IP”,“79.212.82.103”)](requestTemplate{proxy=Just myProxy})
来设置请求。然后
newManager>>=http请求
用于一个查询,或者您将使用
do
缓存管理器。)
request $ postRequestWithBody  "http://www.geocodeip.com/" "application/x-www-form-urlencoded" "IP=79.212.82.103"