gpt4 book ai didi

python - 如何使用 wreq 在 haskell 中发出 json 请求?

转载 作者:太空宇宙 更新时间:2023-11-03 15:09:23 25 4
gpt4 key购买 nike

我有一个接受 json 请求的服务器,它们可以与 python 客户端一起正常工作。我正在尝试在 haskell 中做同样的事情。

例如我的 python 客户端有以下代码

conn = JSONRPCProxy("XXX.XX.XX.XX", 5050, "2.0", 120)
print conn.request('show_attrs', [{"shortcode":"CODEWORD1","fx":'CD2'}, ["?queryattr", "queryname"]]);

我想使用 haskell 发送相同的查询并返回 json 作为结果。现在不用担心 json 解析了!

我尝试了 Network.Wreq,它有点管用,但总是没有响应

data MyPriceRequest = MyRequestRequest { method::String,id::Int} deriving (Show,Generic)

instance ToJSON MyPriceRequest
r <- post "http://IP.IP.IP.IP:port/" (toJSON (MyRequestRequest "codeword" [""] 1))

*** Exception: NoResponseDataReceived

我得到异常,但相同的代码适用于 python

在 python 中,它适用于...

conn = JSONRPCProxy("IP.IP.IP.IP", port, "2.0", 120)
print conn.request('codeword', []);

最佳答案

这是一个在 httpbin.org 上执行 POST 查询的工作示例:

{-# LANGUAGE OverloadedStrings #-}
module Main where

import Network.Wreq
import Control.Lens
import Data.Aeson.Lens
import qualified Data.Text as T
import Data.Aeson

main = do
r <- post "http://httpbin.org/post" (toJSON (T.unpack "123"))

let datas = r ^. responseBody . key "data" . _String
ua = r ^. responseBody . key "headers" . key "User-Agent" . _String

(putStrLn . T.unpack) datas
(putStrLn . T.unpack) ua

它应该打印出如下内容:

"123"
haskell wreq-0.3.0.1

我尝试使用 http://127.0.0.1:80 形式的 URL,结果相同。

您是否尝试过在您的 shell 中使用 curl 来查看它是否表现出相同的行为?服务器是否可能仅在某些 header 字段存在或设置为特定值时才响应?

关于python - 如何使用 wreq 在 haskell 中发出 json 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28911684/

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