首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否不接受clj-http - body在Clojure中的请求?

是否不接受clj-http - body在Clojure中的请求?
EN

Stack Overflow用户
提问于 2022-06-05 12:52:08
回答 1查看 166关注 0票数 0

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

JSON文件是一个多层次的文件,在clojure中被看作是一个持久的数组映射。

我要发布的代码是:

代码语言:javascript
运行
复制
(def contacts (http/post "https://api.close.com/api/v1/data/search" 
           {:basic-auth [api ""]
            :body closeFilter 
            })) 

CloseFilter表示我希望发布的mutli级别的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

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

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

代码语言:javascript
运行
复制
(ns schedule-emails.core
  (:require [clj-http.client :as http]
            [clojure.data.json :as json]
            [cheshire.core :refer :all]))

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

代码语言:javascript
运行
复制
(def closeFilter
  (json/read-str
   (slurp "URL TO LOCAL FILE")))

最后,我想将这些信息从本地文件发布到软件中:

代码语言:javascript
运行
复制
def contacts (http/post "API URL HERE"
           {:accept :json
            :as :json
            :content-type :json
            :basic-auth [api ""]
            :body closeFilter}))

但是,我得到以下错误:

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')

我也尝试了下面建议的解决方案,但我也遇到了同样的问题。

EN

回答 1

Stack Overflow用户

发布于 2022-06-05 13:22:54

clj-http不会自行与某些后端谈判它所期望的内容,并“自动”胁迫传输的数据。但是,您可以配置,在JSON的情况下,一些具有适当内容类型的数据将从主体转换为请求,并使用JSON返回到响应中的数据。

  1. 因此,您通常希望在请求中包含以下内容: {:自动:强制:总是:内容类型:应用程序/json :body .;您自己的附加内容.} 所以添加一个mime类型,这样clj都知道该做什么,后端也知道它得到了什么。 见输入胁迫输出胁迫
  2. 你必须确保,让它真正发挥作用的方法是存在的。这意味着,您已经将cheshire添加为依赖项。请参阅可选依赖关系

当然,另一个选择是自己处理这个问题。因此,您需要添加一个库,它可以从/创建JSON到字符串或流、content-type并转换主体/响应。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72507476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档