gpt4 book ai didi

java - Clojure Android HTTP 请求

转载 作者:行者123 更新时间:2023-12-01 09:11:43 25 4
gpt4 key购买 nike

如何在 Clojure Android 中发出 HTTP 请求项目?

  • 都不是clj-http也不http-kit似乎对 Android 友好
  • this question中的方法给出 android.os.NetworkOnMainThreadException

尝试解决该问题 Exception根据给出的答案here有各种问题。首选解决方案(使用 AsyncTask )需要子类化,并且我不完全清楚如何编写这样做的 Clojure 代码。尝试改变StrictMode设置会导致与命名空间相关的错误。最后,启动一个新线程来处理 (.start (Thread. (fn [] ...))) 的 Web 请求。在测试中使应用程序完全崩溃。

那么,再一次:如何在使用 Clojure Android 编写的 Android 应用程序中发出 HTTP 请求?

最佳答案

已关注 the question you linked to above ,他们的(maslurp)在android中工作Clojure REPL app ,如果 (.setDoOutput) 设置为 false,则按照 this question ,并且您将调用包装在 future 中(以避免android.os.NetworkOnMainThreadException):

(defn maslurp [url]
(let [a (new java.io.BufferedReader
(new java.io.InputStreamReader
(.getInputStream (doto (.openConnection (new java.net.URL url))
(.setRequestMethod "GET")
(.setDoOutput false) ; false for GET
(.setUseCaches false)))))]
(loop [r (.readLine a) s ""]
(if (nil? r)
s
(recur (.readLine a) (clojure.string/join [s r]))))))


@(future (maslurp "https://www.google.com"))

关于java - Clojure Android HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40876849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com