- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 clj-http 创建多部分 HTTP 请求。多部分请求如下:
--Boundary
Content-Type: text/xml; charset=UTF-8
Content-Id id1
xml1
--Boundary
Content-Type: text/xml; charset=UTF-8
Content-Id id2
xml2
--Boundary--
我正在使用此 Clojure 代码来构建多部分请求:
(post "url"
{:multipart [{:name "XML1"
:content Xml1
:encoding "UTF-8"
:mime-type "text/xml"}
{:name "XML2"
:content Xml2
:encoding "UTF-8"
:mime-type "text/xml"}]})
如何在多部分中添加 Content-Id
?
最佳答案
:name 属性用于给出实体的名称,即多部分的第一个内容等等。
Clojure 缺乏在多部分请求中添加内容 ID 的功能。但是,在 clojure 中,clj-http 客户端在内部使用 http-client api 来构建多部分请求。请参阅this 有关如何在 clj-http 中创建多部分的链接。
clj-http 客户端未在任何地方使用内容 ID。所以,有一件事很明确,我们无法创造带有 content-id 的多部分请求。
我找到了一个解决方案,只需在 clojure 中导入 http-client 包并创建多部分请求。不需要下载任何 http-client jar,正如我告诉 clj-http 使用 http-client 作为依赖项。
(:import (java.nio.charset Charset)
(org.apache.http.entity.mime MultipartEntity)
(org.apache.http.entity.mime FormBodyPart)
(org.apache.http.entity.mime HttpMultipartMode)
(org.apache.http.entity.mime.content
ByteArrayBody
FileBody
InputStreamBody
StringBody))
只需使用下面的函数模板来创建您自己的请求。并将多部分对象作为 http 请求的 :body 给出。但是,它不是纯粹的 clojure 实现。这是临时解决方案。
(defn build-form-body [formbody content cid]
(let [sb (StringBody. content "text/xml" (Charset/forName "utf-8"))]
(let [fb (FormBodyPart. formbody , sb)]
(.addField fb "Content-Id" cid)
fb)))
(defn build-multipart []
(let [mp-entity (MultipartEntity.)]
(.addPart mp-entity (make-form-body "formbody1" Xml1 "content-id1-val"))
(.addPart mp-entity (make-form-body "formbody2" Xml2 "content-id1-val2"))
mp-entity))
注意:给出正确的内容类型。就我而言,它是 xml,所以对我来说“text/xml”和字符串主体。如果是文件,则内容类型将更改并使用 FileBody 等。
希望对您有帮助。
关于clojure - 如何使用 clj-http api 在 clojure 中创建多部分请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21332736/
这是我的问题:每次打开新的 repl 时,我都需要运行一些代码,在 Google 中搜索我发现我可以使用文件 init.clj 或 user.clj (使用 Leiningen) 这是我需要运行的代码
storm操作zookeeper的主要函数都定义在命名空间backtype.storm.cluster中(即cluster.clj文件中)。 backtype.storm.cluster定义了两个重
我刚刚开始使用 clojure,并且对 core.clj 有一个非常基本的问题。 关于它的约定是什么?什么代码应该去那里?公共(public)API? 它是由 leiningen 在创建项目时生成的。
我正在使用 clj-pdf生成pdf文件。正如 README 文件所建议的,该库提供了一些基本的模板选项。 例如,给定一个 map 向量,如: (def employees [{:country
我一直在尝试使用 to-local-date-time、org.joda.time.DateTimeZone/getDefault、格式化程序等,但我仍然不知道如何获取我存储的日期时间作为 UTC 以
我有以下无意义的 *.clj 文件: (ns bar.zar.Foo (:gen-class :main true)) (println "foo") (defn -main [& args]
Leiningen 中是否有与此 clj 命令等效的命令: clj -m project.core 看起来如果我使用 Leiningen,我需要先创建 project.clj,然后才能运行它 lein
我想使用 clj-http,因此我使用 lein 创建了一个项目,并在 project.clj 中包含这些依赖项: (defproject app "0.1.0-SNAPSHOT" :descript
如何安装旧版本的boot clj?我需要 2.7.2 版本,但实际上正在安装 2.8.3。我的操作系统是 Debian 9。 最佳答案 方法是放一个文件boot.properties: #http:/
我刚刚将我的系统从 Java 8 更新到 OpenJDK Java 11 版本。我有一个无法编译的项目,并且出现以下错误: Java.lang.IllegalArgumentException: Mu
我正在尝试使用 clj-http 版本 2.2.0 从 REST 资源中读取 JSON,但无论我做什么,我都会将结果作为字符串。 在调试时,我将对此请求所做的操作剥离到我的网络服务器上的静态 JSON
我想从命令行搜索和安装 clojure 依赖项。 是否存在工具/leiningen 命令/lein change脚本?/...可以: 在线搜索 clojure 库 重写 project.clj包含依赖
我是Clojure的新手,而且我不太了解如何编写project.clj,因此它对lein repl和lein run都适用。这是(整个路径:~/my-project/project.clj): (de
我正在尝试设置 proto-repl atom-editor 包,显然它需要一个文件 user.clj 存在于某处 - 我猜这是一些 leiningen 的 init 文件。 我应该在哪里创建这个文件
我已经通过 Google 搜索这个问题很长一段时间了,但我找不到 clj-time 的最终解决方案。我想按区域设置自动格式化日期,例如 this example或here 。我该如何使用 clj-ti
我需要向外部服务 (Twilio) 发出 Web 请求,并为同一参数指定多个值,例如 GET /some-url?status=1&status=2&status=3 我如何告诉 clj-http 像
我正在使用 lein 来管理我的项目,并且我有许多 :dependency 以及 :dev-dependency。有没有办法查明这些依赖项是否有可用的更新? 最佳答案 我自己没有尝试过,但是有Lice
在 haskell 中,通过自定义 ~/.ghci 进入其交互环境时,我可以自动使用“test.hs”中定义的函数。 >cat ~/.ghci :def hoogle \str -> return $
我正在使用 boot 构建 Clojure&ClojureScript 项目。显然,它取决于许多拥有所有许可证的第三方图书馆。大多数这些许可都要求在生成的可交付成果中提及依赖项的版权。 我找不到启动插
我有一个代码是 clj-http 的组合, core.async设施和 atom .它创建了一些线程来获取和解析一堆页面: (defn fetch-page ([url] (fetch-page
我是一名优秀的程序员,十分优秀!