【问题标题】:How to set 'no proxy' in clojure http request like we do in curl?如何像在 curl 中一样在 clojure http 请求中设置“无代理”?
【发布时间】:2019-01-07 06:27:08
【问题描述】:

我想使用“no-proxy”在开放式轮班舱内的 clojure 中点击一个 api(GET 请求),但它给了我 404(找不到资源),尽管我通过了正确的标头(用于开放式轮班舱内的授权)。通过 curl 命令在 pod 终端中使用 noproxy 给出 200 的相同请求。请建议。

使用Clojure API - clj-http.client

以下是不工作的 Clojure 代码(给出 404):

(defn get-toggles []   
   (let [options {:headers {:x-jwt-payload "valid-value-passed"}}
         response (client/get "correct-url" {:proxy-ignore-hosts "*" :proxy-port "*"} options)]))

下面是运行正常的 Pod 终端内的 Curl(仅使用 noproxy):curl -i --noproxy "*" "any-correct-url" -H "x-jwt-payload :valid-value"

注意:如果没有“noproxy”,我们将得到 401,这就是我们使用它的原因。

【问题讨论】:

    标签: http curl clojure proxy


    【解决方案1】:

    查看源代码,似乎没有办法创建一个完全不使用代理的请求。

    我曾经遇到过同样的问题,最终使用了Jsoup,这是一个用于发出 http 请求和解析 HTML 的 java 库。我没有使用 HTML 解析功能,我向 Rest Api 发送了请求,但是 Jsoup 的 Api 很好,并且可以从 Clojure 中很好地使用。例如:

    (ns something
      (import
       org.jsoup.Jsoup
       java.net.Proxy
       java.lang.Thread))
    
    (defn api-call [url]
      (->
       (Jsoup/connect url)
       (.proxy (Proxy/NO_PROXY))
       (.ignoreContentType true)
       (.get)
       (.body)
       (.text)))
    

    【讨论】:

    • 谢谢 :) 你能把带有标题的例子也放在上面的 clojure 函数中吗?我将尝试使用该代码,并让您知道结果。
    猜你喜欢
    • 2020-09-23
    • 2013-06-13
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 2014-10-27
    • 1970-01-01
    • 2015-10-05
    • 1970-01-01
    相关资源
    最近更新 更多