java - 处理响应代码 : 403 for URL with clojure enlive

标签 java http clojure http-status-code-403 enlive

我正在尝试使用 enlive 的 html-resource 函数抓取网页内容,但我收到响应 403,因为我不是来自浏览器。我猜这可以在 Java 中被覆盖(找到答案 here ) ,但我希望看到一个 clojure 方法来处理这个问题。也许这可以通过向 html-resource 函数提供参数来实现,但我还没有遇到过如何以及需要将什么作为参数传递的示例。任何建议将不胜感激。

谢谢。

最佳答案

Enlive 的 html-resource 没有提供覆盖默认请求属性的方法。您可以像找到的其他答案一样,自己打开连接并将生成的 InputStream 传递给 html-resource

类似下面的东西会处理它:

(with-open [inputstream (-> (java.net.URL. "http://www.example.com/")
                            .openConnection
                            (doto (.setRequestProperty "User-Agent"
                                                       "Mozilla/5.0 ..."))
                            .getContent)]
  (html-resource inputstream))

不过,拆分成自己的函数可能看起来更好。

关于java - 处理响应代码 : 403 for URL with clojure enlive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18683565/

相关文章:

java - 将 JLabel 与 JCheckBox 的文本对齐

Java阅读POST,奇怪的十六进制解释

mongodb - 使用 ids 数组表单数据库获取所有匹配项目

ubuntu - Ubuntu 13.10 中的 Leiningen 无法工作

java - 你能自动将 Eclipse 的调试器附加到子进程吗?

java - 将 java 应用程序作为 jar 运行时的 log4j 警告(请正确初始化 log4j 系统。)

java - 如何使用工厂模式来获取数据库客户端的实例?

c# - 为什么 HttpCacheability.Private 会抑制 ETag?

Clojure : why does this writer consume so much heap space?

clojure - 如何从列表中删除多个项目?