Playにはplay.api.libs.ws.WS(Web Service、WebSocketではない)というライブラリがあってHTTP通信をすることができる。
非同期にやってくれるので、レスポンスを同期的に使うには返り値をちょっとゴニョゴニョしないといけない。
で、Play2.0系のときはPromise[ws.Response]で返ってたんだけど、2.1からはFuture[ws.Response]で返ってくる。
ググって上の方に出てくるやつは大体2.0系の話なのでそのままでは動かない。
なので2.0系で以下のように書いていたものは
2.1系では以下のように書く必要がある。
本来これでいいと思うのだけど、
http://grokbase.com/t/gg/play-framework/131rzk6wcm/possible-ws-response-encoding-bug
とかで言及されているように<meta charset="utf-8">とか書かれてるHTMLでもISOで返ってきちゃう。
なので、文字コードを変換してやる
ちゃんと探してないけど、もしかしたらWSのオプションとかでエンコードを指定してやったりできるのかもしれない。
2013年3月23日土曜日
2012年11月28日水曜日
Playでライブラリ使おうとしてどハマりした
Playの中で、dispatchを使おうとしてハマったのでメモ。
結論から述べると、Build.scalaに以下のように書いて、
以下、ダメだったこと。
そんなはずあるかよく探せ、などと言ってみても見つかりませんの一点張り。
ダメ元で、
ついでにbuild.sbtを自分で作ってそこに書いてみてもダメだった。
結論から述べると、Build.scalaに以下のように書いて、
val appDependencies = Seq(
// Add your project dependencies here,
"net.databinder.dispatch" %% "dispatch-core" % "0.9.4"
)
% play
してreload
してupdate
してcompile
してrun
したら動いた。以下、ダメだったこと。
libraryDependencies +=
"net.databinder.dispatch" %% "dispatch-core" % "0.9.4"
をPlugins.sbtに書いても
module not foundとかdispatchなんて定義されてないぜ、とか言ってくる。そんなはずあるかよく探せ、などと言ってみても見つかりませんの一点張り。
ダメ元で、
addSbtPlugin("net.databinder.dispatch" % "dispatch-core" % "0.9.4")
とか書いてみてももちろんダメ。ついでにbuild.sbtを自分で作ってそこに書いてみてもダメだった。
2012年7月22日日曜日
[Mac]Scalaで日本語使う
日本語を出力しようとしたら文字化けした。
.zshrcに以下を追加。
参考: Scala, Mac and -Dfile.encoding=UTF-8 - Kato Kazuyoshi
JAVA_TOOL_OPTIONS='-Dfile.encoding=UTF8'
をつけて実行すれば文字化けしない。% JAVA_TOOL_OPTIONS='-Dfile.encoding=UTF8' scala hoge.scala
.zshrcに以下を追加。
REPLでも日本語使えるようになるけど、書いて消すとズレたりするありがちな感じになる。export JAVA_OPTS="-Dfile.encoding=UTF-8"
参考: Scala, Mac and -Dfile.encoding=UTF-8 - Kato Kazuyoshi
2012年6月29日金曜日
Playをインストール & Play Scala動かす
最近は仕事とかいうものにかまけていたせいでブログを書いてなかった。
どうやら合っているようなのでインストールする。
なかなかの重量級なようでダウンロードにも時間がかかった。
と思ったらインストールが終わってた。ディレクトリを移動しただけだったようだ。
とりあえずJavaには興味がないのでScalaのプロジェクト作る
まあプロジェクト名とアプリ名は違うこともあるか。しょうがないしょうがない。
1番を選択。(2番だとどうなるんだろう)
できたら動かす
ポート9000で動いているようなのでlocalhost:9000にアクセス。
Playの公式サイトと同じような画面が表示される。
これはしかしなかなかの全部入り感でいじるにはちょっと萎えますね。
3番選ぶとよかったのかな。
% brew search play
したらplay出てきたけど、こういう一般的な言葉が名前だと合ってるのか不安極まりない。% brew info play
play 2.0
http://www.playframework.org/
Not installed
https://github.com/mxcl/homebrew/commits/master/Library/Formula/play.rb
どうやら合っているようなのでインストールする。
% brew install play
なかなかの重量級なようでダウンロードにも時間がかかった。
と思ったらインストールが終わってた。ディレクトリを移動しただけだったようだ。
とりあえずJavaには興味がないのでScalaのプロジェクト作る
% play new calas --with scala
そしたらなんか聞かれたWhat is the application name?
> calas
え?calasって言ったじゃないですか。ご丁寧にデフォルトでcalasって入ってるし。まあプロジェクト名とアプリ名は違うこともあるか。しょうがないしょうがない。
Which template do you want to use for this new application?
1 - Create a simple Scala application
2 - Create a simple Java application
3 - Create an empty project
>
え?Scalaでって言ったじゃないですか。しかも今度はデフォルト入ってないし。1番を選択。(2番だとどうなるんだろう)
できたら動かす
% cd calas
% play run
やけに時間がかかった。初回の初回だからか?ポート9000で動いているようなのでlocalhost:9000にアクセス。
Playの公式サイトと同じような画面が表示される。
これはしかしなかなかの全部入り感でいじるにはちょっと萎えますね。
3番選ぶとよかったのかな。
登録:
投稿 (Atom)