2010年4月9日金曜日

JAX-WSベースのクライアントから、RubyなWebサービスに繋ぐ

Java6から追加された JAX-WS(Java API for XML-Based Web Services) をベースとしたクライアントから、Rubyで構築されたWebサービスに繋ぐと、見事にExceptionが吐かれた。

調べてみると、原因は、Content-typeのcharset。

クライアントから送信される際のcharsetは、
charset:"utf8"
となっている。

一方、ruby側は、大文字の「UTF-8」しか受け付けてくれない模様。

さらに、JAX-WSのあたりを調べてみると、charsetはソース直書きの固定(外から設定しても、最終的に全て置き換えられる)ので、どうしようもない。

結局、URLConnectionオブジェクトを作って、SOAPActionやら、Envelopを自前で作って接続。→あっさり接続できた。

# SOAPは、以外と実装言語ごとに微妙に送信/受信の仕様が異なることが多い。。
# やっぱりRESTの方が単純だし、こっちの方がいいな。。

0 件のコメント:

コメントを投稿