3

RailsアプリケーションをWCFサービスと統合しようとしています。私はsoap4rとSavonをまったく愛せずに試しました。私の知る限り、最新バージョンのSOAPをサポートしているRubyライブラリはありません。

私が得ていたエラーは次のとおりです。

コンテンツタイプ'text/ xml; charset =UTF-8'が予期されたタイプ'application/ soap + xml;ではなかったため、メッセージを処理できません。charset =utf-8'。'application/ soap + xml; charset =utf-8'。

WCFサービスバインディングをwsHttpBindingからbasicHttpBindingに変更することでこのエラーを克服できましたが、新しいエラーが発生しました。

EndpointDispatcherでのContractFilterの不一致が原因で、アクション''を含むメッセージを受信者で処理できません。これは、コントラクトの不一致(送信者と受信者の間のアクションの不一致)または送信者と受信者の間のバインディング/セキュリティの不一致が原因である可能性があります。送信者と受信者が同じコントラクトと同じバインディング(メッセージ、トランスポート、なしなどのセキュリティ要件を含む)を持っていることを確認します。(SOAP :: FaultError)

さて、Rubyライブラリのいずれにもエンドポイントを設定する方法が見当たらないため、このエラーは私を困惑させます。誰か知っている?

誰かがRubyからWCFサービスを正常に呼び出しましたか?'application / soap + xml; charset =utf-8'。

4

3 に答える 3

3

これが機能することに注意してください...サービスのweb.configをbasicHttpBindingに変更した後、Savonはメッセージを送受信できるようになります。静止できず、アクション''エラーをスローするのはsoap4rだけです。

于 2010-08-31T19:35:58.580 に答える
1

これはあなたが聞きたくないものかもしれませんが、私は最近RubyでSOAPと対話しています...それはまったく面白くありません。利用可能なgemはどれも完全で安定しておらず、十分に文書化されておらず、少し複雑さを追加します(整数または文字列を渡すだけでなく、いくつかの値を含むオブジェクトを渡す)。

結局、.netクライアントからのリクエストをスニッフィングし、.to_xmlメソッドを持つオブジェクトを作成し、XML Builderオブジェクトを取得して、それ自体のものを追加しました。

これでリクエストが処理され、各サービスリクエストメソッドがカスタムメイドされて、結果に必要な情報が抽出されます。

それを行うための非常に手動の方法であり、使用する必要があるすべてのメソッドにさらに追加する必要がありますが、少なくともそれは機能します!

私が一緒に仕事をしている他の何人かの人は、JRubyとAxisを使って成功しました。純粋なRubyソリューションが欲しかったので、私はこれを避けました。

申し訳ありませんが、これ以上お役に立てませんでした。ご希望の場合は、soapリクエストを作成するためのコードを投稿します...

于 2010-08-22T10:40:15.100 に答える
1

WCFWebサービスでSavonと同じ問題が発生していました。コンテンツエラーは、サービスがSOAP 1.2を想定しているためですが、デフォルトではSavonはリクエストをSOAP1.1として送信します。

1.1のContent-Type値は'text/ xml; charset = UTF-8'ですが、サーバーが1.2(wsHttpBinding)用に構成されている場合、Content-Typeは' application / soap+xml;である必要があります。charset =utf-8'。

私はSavonのウェブサイトでこの方法を見つけました:

response = client.request :get_user do
  soap.version = 2
end
于 2012-10-08T15:30:33.837 に答える