在 Clojure 中下载文件时如何设置用户代理标头?



使用此答案(clojure.java.io/input-stream(中描述的方法,我将如何设置用户代理请求标头?

你不能。clojure.java.io 是一个非常简单的API,用于做最简单的事情。如果你想要任何真正的自定义,你需要使用一个真正的HTTP库。

您可以设置属性,但只能在一定程度上设置属性。

从这个答案 https://stackoverflow.com/a/47300260/483566 我尝试在终端中运行netcat:nc -l -p 8080

在 REPL 上,我尝试了以下方法:

$ lein repl
nREPL server started on port 42819 on host 127.0.0.1 - nrepl://127.0.0.1:42819
REPL-y 0.4.3, nREPL 0.6.0
Clojure 1.10.0
OpenJDK 64-Bit Server VM 11.0.4+11-post-Ubuntu-1ubuntu218.04.3
Docs: (doc function-name-here)
(find-doc "part-of-name-here")
Source: (source function-name-here)
Javadoc: (javadoc java-object-or-class-here)
Exit: Control+D or (exit) or (quit)
Results: Stored in vars *1, *2, *3, an exception in *e
user=> (System/setProperty "http.agent" "Clojure REPL")
nil
user=> (slurp "http://localhost:8080/")

Netcat 实际上并没有提供内容,因此 REPL 会阻塞,但如果您看到运行 netcat 的终端,您将看到类似以下内容的内容:

GET / HTTP/1.1
User-Agent: Clojure REPL Java/11.0.4
Host: localhost:8080
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive

对于实际的自定义,您可能希望使用提供对 HTTP 标头的访问的 HTTP 客户端库(大多数都可以(。

最新更新