gpt4 book ai didi

haskell - 如何轻松获取https post响应数据?

转载 作者:行者123 更新时间:2023-12-02 08:28:19 25 4
gpt4 key购买 nike

我正在开发一个使用 Google URL 缩短 API 的玩具程序。要缩短 URL,您需要发送此请求:

POST https://www.googleapis.com/urlshortener/v1/url
Content-Type: application/json

{"longUrl": "http://www.google.com/"}

您将收到以下响应:

{
"kind": "urlshortener#url",
"id": "http://goo.gl/fbsS",
"longUrl": "http://www.google.com/"
}

一开始我使用Network.HTTP,但发现它不支持HTTPS,而Google的API只支持HTTPS。所以我转向 Network.Curl。我发现有一个方便的 HTTP GET 函数

curlGetString :: URLString -> [CurlOption] -> IO (CurlCode, String)

但是 HTTP POST 没有这样的函数。更糟糕的是,我找不到获取HTTP POST的响应数据的方法。我所知道的是我可以使用

发出 HTTP POST 请求
curlPost :: URLString -> [String] -> IO ()

谁能告诉我一条出路吗?谢谢。

最佳答案

只是为了通过使用 http-enumerator 提供替代解决方案:

{-# LANGUAGE OverloadedStrings #-}

import Network.HTTP.Enumerator
import Network.HTTP.Types
import qualified Data.ByteString.Lazy as L

main = do
req0 <- parseUrl "https://www.googleapis.com/urlshortener/v1/url"

let req = req0 { method = methodPost
, requestHeaders = [("Content-Type", "application/json")]
, requestBody = RequestBodyLBS "{\"longUrl\": \"http://www.google.com/\"}"
}

res <- withManager $ httpLbs req

L.putStrLn $ responseBody res

关于haskell - 如何轻松获取https post响应数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5612145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com