Rails に XML データを Post する
RailsにJSONデータをPostする -- BONNOH FRACTION 14 を見ていたら
Rails は XML 形式で Post されたデータを
ハッシュで受け取れるということを知ったので試してみた。
送信側
なんとなく Prototype.js 1.6.0.1 で送信する。
var url = 'push'; var xml = "<a><b>c</b><b>d</b></a>"; new Ajax.Request(url, {method: 'post', postBody: xml, asynchronous: false, contentType: 'application/xml'});
contentType オプションで application/xml を指定するのがポイント。
Rails は contentType を見て application/xml だったらデータを XML としてパースする。
受信側
Rails 2 では怪しい Post データが来ると CSRF 対策のため
InvalidAuthenticityToken という例外が飛んでしまう。
そこで(ホントはよくないけど)この機能を無効にする。
class XMLController < ApplicationController skip_before_filter :verify_authenticity_token # allow CSRF end
これで Post された XML をハッシュとして扱える。
params にデータが入っているのでそこからアクセスする。
class XMLController < ApplicationController skip_before_filter :verify_authenticity_token # allow CSRF def push if params hoge = params['a']['b'][0] # c piyo = params['a']['b'][1] # d end end end