Clojure/Java中通过自定义协议隧道HTTP

Clojure/Java中通过自定义协议隧道HTTP,java,http,clojure,Java,Http,Clojure,我想通过自定义传输协议对HTTP请求流进行隧道传输。是否有Clojure或Java HTTP客户端(作为备用)允许我访问底层请求流或过滤序列化的请求和响应 我知道cljhttp包装了ApacheHttpComponents,但似乎没有为HC内部提供很多钩子,我也研究过HC本身,但很难在工厂、接口和管理器的丛林中导航。包括从输入流读写的能力 (client/get "http://site.com/bigrequest.html" {:as :stream}) (client/post "htt

我想通过自定义传输协议对HTTP请求流进行隧道传输。是否有Clojure或Java HTTP客户端(作为备用)允许我访问底层请求流或过滤序列化的请求和响应

我知道
cljhttp
包装了ApacheHttpComponents,但似乎没有为HC内部提供很多钩子,我也研究过HC本身,但很难在工厂、接口和管理器的丛林中导航。

包括从输入流读写的能力

(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})

然后,您可以将此流包装在您选择的传输中

您可以将请求正文作为流。为此,您需要将
:body
值设置为实现
InputStream
的任何对象。有关更多详细信息,请查看中的函数
wrap input-conjustion

此示例将响应读取为流。有没有一种方法可以将请求作为流?我需要使用标题(至少)访问整个请求。我不认为clj http会有这个选项,您需要使用更低级的http API,因为它可以通过协议传输:P