标签: clj-http

clj-http没有返回JSON

我正在尝试使用clj-http 2.2.0版从REST资源中读取JSON,但无论我做什么,我都将结果作为字符串.

在调试时,我在https://nym.at/test.json上的网络服务器上删除了我对此请求所做的操作:静态JSON文档:

{"foo":1,"bar":"baz"}
Run Code Online (Sandbox Code Playgroud)

我在REPL中运行以下代码(client绑定到命名空间clj-http.client):

(client/get "https://nym.at/test.json" {:as :json :insecure? true})
Run Code Online (Sandbox Code Playgroud)

我得到的结果是(手动打印):

{:status 200,
 :headers {"Server" "Apache/2.4.18 (Debian)",
           "Upgrade" "h2,h2c",
           "Content-Type" "application/json",
           "Content-Length" "22",
           "Strict-Transport-Security" "max-age=31536000; includeSubDomains",
           "Connection" "Upgrade, close",
           "Accept-Ranges" "bytes",
           "ETag" "\"16-532fcf29f30c6\"",
           "Date" "Mon, 16 May 2016 22:14:59 GMT",
           "Last-Modified" "Mon, 16 May 2016 22:14:27 GMT"},
 :body "{\"foo\":1,\"bar\":\"baz\"}\n",
 :request-time 637,
 :trace-redirects ["https://nym.at/test.json"],
 :orig-content-encoding nil}
Run Code Online (Sandbox Code Playgroud)

我的期望是错误的,{:as :json}应该导致clj-http将响应解析为JSON并将其撤回:body或者我在这里做错了吗?

json clojure clj-http

5
推荐指数
1
解决办法
870
查看次数

在 Clojure 中使用 clj-http 发布请求 - 正文不被接受?

通过我的发布请求,我希望发布的 CRM API 文档也要求我发布 JSON 文件。

JSON 文件是一个多级文件,在 clojure 中被视为持久数组映射。

我要发布的代码是:

(def contacts (http/post "https://api.close.com/api/v1/data/search" 
           {:basic-auth [api ""]
            :body closeFilter 
            })) 
Run Code Online (Sandbox Code Playgroud)

CloseFilter 代表我希望发布的多级 JSON。

但是,我收到以下错误:

class clojure.lang.PersistentArrayMap cannot be cast to class [B (clojure.lang.PersistentArrayMap is in unnamed module of loader 'app'; [B is in module java.base of loader 'bootstrap')

我在这里犯了什么错误?

更新

我正在用 Javascript 重新创建一个程序。发布相同的文件效果很好。

更新 2 - MRE

我仍然在努力解决这个问题,所以这是我的代码示例。

我的代码首先需要我需要的包:

(ns schedule-emails.core
  (:require [clj-http.client :as http]
            [clojure.data.json :as json]
            [cheshire.core :refer :all]))
Run Code Online (Sandbox Code Playgroud)

然后,我将文件系统中的本地 JSON 文件解析到应用程序中。JSON。这将返回带有嵌入向量的地图的地图。

(def closeFilter
  (json/read-str
   (slurp "URL …
Run Code Online (Sandbox Code Playgroud)

post clojure clj-http

5
推荐指数
1
解决办法
978
查看次数

如何在 clojure/ring 中进行 http 调用?

我的 Web 客户端(以 编写cljs)连接到后端(以clj),需要进行一些第三方 API 调用。它必须在服务器上完成,然后结果应该以特定的方式转换并发送回客户端。

这是我的网址之一的处理程序

(defn get-orders [req]
  (let [{:keys [sig uri]} (api-signature :get-orders)]
    (client/get uri
                {:async? true}
                (fn [response] {:body "something"})
                (fn [exception] {:body "error"}))))
Run Code Online (Sandbox Code Playgroud)

{:body "something"}它没有返回,而是返回以下错误:

No implementation of method: :render of protocol: #'compojure.response/Renderable found for class: org.apache.http.impl.nio.client.FutureWrapper
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

http clojure clj-http

0
推荐指数
1
解决办法
1159
查看次数

如何修复ERR_INVALID_CHUNKED_ENCODING错误?

我有一个充当代理服务的Clojure应用程序。目标是通过路径“ / grafana” 将请求代理到http://127.0.0.1:3000(Grafana服务),因此,如果我通过浏览器访问http://127.0.0.1/grafana,它应该代理我的请求到端口3000并显示Grafana的UI。

我遇到的问题是在浏览器中收到ERR_INVALID_CHUNKED_ENCODING响应。在Wireshark中,对端口3000的请求显示HTTP响应重新组合了3个TCP数据包。但是,对通过我的代理的请求的响应未进行重组,从而导致分块错误。有人对如何解决这个问题有任何想法吗?

谢谢。

proxy http clojure chunked-encoding clj-http

0
推荐指数
1
解决办法
6833
查看次数

标签 统计

clj-http ×4

clojure ×4

http ×2

chunked-encoding ×1

json ×1

post ×1

proxy ×1