http запрос от Google App Engine - PullRequest
       7

http запрос от Google App Engine

2 голосов
/ 29 сентября 2010

Я пытаюсь сделать http-запросы из моего веб-приложения Google App Engine и обнаружил, что должен использовать URLConnection, поскольку это единственный класс из белого списка.Соответствующая библиотека Clojure - clojure.contrib.http.agent, и мой код выглядит следующим образом:

(defroutes example
  (GET "/" [] (http/string (http/http-agent "http://www.example.com")))
  (route/not-found "Page not found"))

Это прекрасно работает в моей среде разработки - браузер отображает текст для example.com.Но когда я тестирую его на сервере приложений Google для разработки:

phrygian:example wei$ dev_appserver.sh war
2010-09-28 14:53:36.120 java[43845:903] [Java CocoaComponent compatibility mode]: Enabled
...
INFO: The server is running at http://localhost:8080/

Он просто зависает при загрузке страницы.Нет ошибок, или что-нибудь.Есть идеи, что может происходить?

Ответы [ 2 ]

3 голосов
/ 30 сентября 2010

http-agent создает потоки, поэтому может быть, это не работает.

Из документации API :

Создает (и немедленно возвращает) Агент, представляющий HTTP запрос запущен в новой ветке.

Вы можете попробовать http-connection , который является оболочкой для HttpURLConnection, так что это должно работать.

Другая альтернатива - попробовать clj-http . API кажется более высокоуровневым, но он использует Apache HttpComponents , который может быть в черном списке.

Я предполагаю, что http.async.client является определенным запретом из-за его сильного асинхронного подхода.

1 голос
/ 03 октября 2010

Возможно, вы захотите попробовать appengine.urlfetch / fetch из appengine-clj (http://github.com/r0man/appengine-clj, также в Clojars)

...