我想通过自定义传输协议传输 HTTP 请求流。是否有任何 Clojure 或作为后备的 Java HTTP 客户端可以让我访问底层请求流或让我过滤序列化的请求和响应?
我知道clj-http
包装了 Apache HttpComponents,但似乎没有为 HC 内部提供很多挂钩,而且我研究了 HC 本身,但很难在工厂、接口和管理器的丛林中导航。
您可以将请求正文作为流。为此,您需要将:body
值设置为任何实现InputStream
. wrap-input-coercion
在https://github.com/dakrone/clj-http/blob/master/src/clj_http/client.clj检查函数以获取更多详细信息。
clj-http包括读取和写入输入流的能力
(client/get "http://site.com/bigrequest.html" {:as :stream})
(client/post "http://site.com/resources"
{:body (clojure.java.io/input-stream "/tmp/foo") :length 1000})
然后,您可以将此流包装在您选择的传输中。