2017-01-18 6 views
0

現在、私はPythonがActiveMQインスタンスに格納されたSOAPメッセージを送受信するためにSTOMPライブラリ(http://jasonrbriggs.github.io/stomp.py)を使用しています。このActiveMQは、コンテンツタイプおよび/またはSoapActionに基づいて異なるボックス内のメッセージを基本的に再構成するように構成されたWSO2 ESBに接続されています。PythonインクルードファイルをXMLメッセージ

私は現時点ではPythonソフトウェアで作業しており、特定のアカウントを使用しているこのActiveMQにのみアクセスできます。 stomp.pyを使用してキューに送受信を行う予定です。私はこれを、SOAPメッセージだけを使用して両方の方法で成功裏に実行しました。私はXMLで本文を構築し、ヘッダーを空のままにしておきます。

添付ファイルが必要であるため、添付ファイル付きSOAP(SwA)を代わりに使用するように質問されました。私は最終的にこれらのメッセージを受け取るシステムがではないことを知っています。まだMTOMを処理していないので、私はSwAメッセージを送信しています。

私はすでにapplication/octet-streamでヘッダにcontent-typeを提供していましたが、実際にこれらのメッセージにファイルそのものを組み込む方法がわかりません。 、辞書形式のヘッダを私はXML本体を構成するメッセージを送信し、コードのこの部分を使用するには

conn = self._build_connection()[0] 
    destination = self.subscription_id.queue_name 
    # Connect to the server 
    conn.connect(username=self.env.user.company_id.login_name, password=self.env.user.company_id.password) 
    # Send the actual message out 
    conn.send(destination, self.body, headers=self.header) 
    conn.disconnect() 

「_build_connection」だけで必要なActiveMQの待ち行列への接続を提供してくれる。これが答えに関連する場合は、私に知らせてください。

私は実用的なソリューションにかなり近いと感じていますが、私は単に欠けているリンクに失敗します。 ------------------編集----------------

私は間違った方向を見ていました。添付ファイルをSOAPメッセージに挿入することは私の問題です。メッセージをActiveMQに渡すことはありません。私はメッセージがActiveMQへの単一のファイル/コールになるので、私は質問を言い換える必要があることにも気づいた。

私は現在、私のメッセージを構築するためにPySimpleSoapを使って作業する方法を理解しようとしています。これが機能したら更新されます。

------------------ EDIT2 ----------------

私の質問の修正してください。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tec="someURLtech"> 
    <soapenv:Header/> 
     <soapenv:Body> 
      <tec:SomethingTechnical> 
       <tec:SomeValue>140</tec:SomeValue> 
      </SomethingTechnical> 
     </soapenv:Body> 
    </soapenv:Envelope> 

そして、私は添付ファイルスイッチSWaを使用してこのに追加し、私は必ずそれが内部で何らかの形であることを確認する必要があります持っていると思った:私はPython用の標準のElementTreeライブラリを使用して作成したこの単純なSOAPメッセージを持っていると仮定封筒。

私はすでにthis link to another question on the differences between SwA and MTOMを見つけましたが、問題のファイルが本当にイメージ(例)であり、実際のbase64でエンコードされたデータをどこに置くべきかを示す必要はありません。注:私はこれらを取得する方法を知っています、私は単にこれらをどのように配置するかを尋ねるだけで、XML内で受け入れられる方法です。

質問の理由は、(あいにく私が共有することが許可されていない)ターゲットアプリケーションのWSDLには、添付ファイルのタグがありますが、実際のデータ(のような)または類似のタグはありません。

また、私はここでのポイントを完全に見逃していると感じています。誰かが説明できると感謝しています。

また、提供されたWSDLに従ってメッセージを作成するだけで、実際にWebサービスを使用する必要はありません。上記のメッセージをActiveMQのESBに投稿します。私はPySimpleSoapを使用しようとしていますが、そこに別の問題が発生しているので、WSDLファイルを検証していません。

答えて

0

サンプルメッセージ/例については、googleを参照してください。私は関連するStackOverflowの質問をリンクしました。

添付ファイル付きSOAPは、さまざまなアプローチがあり、ターゲットサービスと連携していることを確認する必要がある領域です。 SOAPUIのようなツールを使ってメッセージのペイロードを作成し、手動でテストできるようにすることをお勧めします。フォーマットが終了したら、Pythonでの構築は、既存のPython SOAPライブラリを使用するか、または最後の手段として手動で行うべきです。

  1. 関連のSOの質問:How to send a file through Soap in python?
  2. SOAPのUI:https://www.soapui.org/
  3. W3仕様:https://www.w3.org/TR/SOAP-attachments

注:ActiveMQのはオーバーテキストベースのペイロードを受け入れるように、これは、ActiveMQのに関連していません添付ファイルの有無にかかわらず、STOMP。 Stack Overflow Custodiansの怒りを避けるために、ActiveMQタグを削除することをお勧めします。

+0

ありがとうございました。私は実際には既に特定の機能をテストするためにSoapUIを使用していますが、それを言及するのを忘れました。また、明日の私のオープニングポストでもう少し詳しく説明しようと思います。まず、提供された仕様をお読みください。 – Ludo21South

+0

元の質問をより正確な説明で編集しました。うまくいけば、これは簡単に指摘できるものです。 – Ludo21South

関連する問題