Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web services 如何在环处理程序中获取HttpServletRequest?_Web Services_Clojure_Compojure_Ring_Noir - Fatal编程技术网

Web services 如何在环处理程序中获取HttpServletRequest?

Web services 如何在环处理程序中获取HttpServletRequest?,web-services,clojure,compojure,ring,noir,Web Services,Clojure,Compojure,Ring,Noir,有没有办法在环处理程序中获取HttpServletRequest对象? 我正在使用Noir开发一个web应用程序。在处理URI时,我需要获取HttpServletRequest对象。因此,我使用(noir.request.ring request)函数来获取包含以下内容的环请求映射:servlet请求键,但值为nil。这是正确的方法还是我错过了什么 代码如下: (ns my-app (:use noir.request)) (defpage [:get "/app"] []

有没有办法在环处理程序中获取HttpServletRequest对象? 我正在使用Noir开发一个web应用程序。在处理URI时,我需要获取HttpServletRequest对象。因此,我使用(noir.request.ring request)函数来获取包含以下内容的环请求映射:servlet请求键,但值为nil。这是正确的方法还是我错过了什么

代码如下:

(ns my-app
     (:use noir.request))
(defpage [:get "/app"] []
     (str (ring-request)))
结果是:

{:remote-addr "127.0.0.1", :scheme :http, :query-params {}, :session {}, :form-params {}, :multipart-params {}, :servlet #, :request-method :get, :query-string nil, :content-type nil, :cookies {"ring-session" {:value "eb509a65-d33a-40d2-9646-e2ff785428b0"}}, :uri "/app", :server-name "127.0.0.1", :params {}, :headers {"cookie" "ring-session=eb509a65-d33a-40d2-9646-e2ff785428b0", "accept-charset" "GBK,utf-8;q=0.7,*;q=0.3", "accept-language" "en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4", "accept-encoding" "gzip,deflate,sdch", "accept" "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "user-agent" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.106 Safari/535.2", "connection" "keep-alive", "host" "127.0.0.1:8080"}, :servlet-request #, :content-length nil, :server-port 8080, :character-encoding nil, :servlet-response #, :body #, :servlet-context #}

看起来环请求映射是基于您用于Web服务器的适配器构建的。对于jetty,这发生在ring.adapter.jetty中:

如果我是你,我会创建自己的适配器,将你需要的显式添加到请求映射中。特别是你会取代

request-map (servlet/build-request-map request) 请求映射(servlet/构建请求映射请求) 比如:

request-map (assoc (servlet/build-request-map request) :jetty-request request)
请求映射(assoc(servlet/build-request-map-request):jetty请求)出于兴趣,您试图对请求对象做什么?也许还有其他的方法可以做到这一点。