0

Это моя функция, чтобы получить Сообща от электронной почты:Как использовать getInputStream() для получения данных запроса POST в Clojure. Я получаю NullPointerException в Рефлекторе

(defn parse-message [request] 
    (let [session (javax.mail.Session/getDefaultInstance (java.util.Properties.) nil) 
      msg (javax.mail.internet.MimeMessage. session (.getInputStream (:request request)))]) 

Когда я запускаю это я получаю исключение:

java.lang.NullPointerException 
at clojure.lang.Reflector.invokeNoArgInstanceMember(Reflector.java:301) 
at clojure_gae.core$parse_message.invoke(core.clj:161) 
at clojure_gae.core$fn__2038.invoke(core.clj:230) 
at compojure.core$make_route$fn__1769.invoke(core.clj:113) 
at compojure.core$wrap_route_middleware$fn__1765.invoke(core.clj:103) 
at compojure.core$if_route$fn__1744.invoke(core.clj:41) 
at compojure.core$if_method$fn__1736.invoke(core.clj:27) 
at compojure.core$routing$fn__1775.invoke(core.clj:127) 
at clojure.core$some.invoke(core.clj:2515) 
at compojure.core$routing.doInvoke(core.clj:127) 
at clojure.lang.RestFn.applyTo(RestFn.java:139) 
at clojure.core$apply.invoke(core.clj:626) 
at compojure.core$routes$fn__1779.invoke(core.clj:132) 
at clojure.lang.Var.invoke(Var.java:379) 
at clojure_gae.listener$_contextInitialized$fn__11.invoke(listener.clj:1) 
at ring.util.servlet$make_service_method$fn__2091.invoke(servlet.clj:126) 
at clojure_gae.servlet$_service.invoke(servlet.clj:1) 
at clojure_gae.servlet.service(Unknown Source) 
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) 
at com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:128) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:63) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:50) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:125) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectRequest(DevAppServerModulesFilter.java:366) 
at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectModuleRequest(DevAppServerModulesFilter.java:349) 
at com.google.appengine.tools.development.DevAppServerModulesFilter.doFilter(DevAppServerModulesFilter.java:116) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 
at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:98) 
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:511) 
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
at org.mortbay.jetty.Server.handle(Server.java:326) 
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938) 
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755) 
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) 
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) 
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) 

Может кто-нибудь сказать, как решить эту проблему и почему я получаю это исключение. Я импортировал Java.io InputStream и OutStream как. Что-то не так с кодом или каким-либо другим способом разобрать сообщение из полученного письма в виде почтового запроса. Спасибо за любую помощь.

ответ

0

Предполагая, что request является карточкой запроса на звонок, вы можете прочитать тело запроса POST, используя (slurp (:body request)). Для получения дополнительной информации см. https://github.com/ring-clojure/ring/wiki/Concepts#requests.

+0

Спасибо @Shantanu, Это сработало. :). Я сделал это: '(slurp (get-in req [: body]))' –

 Смежные вопросы

  • Нет связанных вопросов^_^