2

Google App Engineウェブアプリからhttpリクエストを作成しようとしていますが、ホワイトリストに登録されている唯一のクラスである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/

ページをロードするとハングします。エラーなどはありません。何が起こっているのか考えてみませんか?

4

2 に答える 2

3

http-agentスレッドを作成するため、動作しない可能性があります。

APIドキュメントから:

新しいスレッドで実行されているHTTPリクエストを表すエージェントを作成します(そしてすぐに返します)。

HttpURLConnectionのラッパーであるhttp-connectionを試すことができるので、これは機能するはずです。

もう1つの方法は、clj-httpを試すことです。APIはもう少し高レベルのようですが、ブラックリストに登録されている可能性のあるApacheHttpComponentsを使用しています。

http.async.clientは、その強力な非同期アプローチのため、絶対にやめられないと思います。

于 2010-09-30T07:40:41.033 に答える
1

appengine-clj(http://github.com/r0man/appengine-clj、同じくclojars)からappengine.urlfetch/fetchを試してみることをお勧めします

于 2010-10-02T23:17:57.950 に答える