Как установить заголовок User-Agent при загрузке файла в Clojure? - PullRequest
0 голосов
/ 25 сентября 2019

Используя метод, описанный в этого ответа (clojure.java.io/input-stream), как мне настроить заголовок запроса User-Agent?

Ответы [ 2 ]

2 голосов
/ 25 сентября 2019

Вы не можете.clojure.java.io - очень упрощенный API для самых простых вещей.Если вам нужна настоящая настройка, вам нужно использовать настоящую HTTP-библиотеку.

1 голос
/ 25 сентября 2019

Вы можете, но только в определенной степени, установить свойство.

Из этого ответа 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 (большинство это сделает).

...