4

私は WSO2 ESB プロキシ サービスに取り組んでいます。これには、ESB の SOAP エンドポイントを介して内部 RESTful サービスを公開することが含まれます。私の RESTful サービスには Content-type = "application/rdf+xml" が必要です。ドキュメントに記載されている3つのプロパティすべて、messageType、ContentType、およびCONTENT_TYPEを使用して設定しようとしました。ただし、リクエストの Content-type は「application/xml」のままです。

以下は、REST サービスを呼び出すシーケンスからの抜粋です。

   <property xmlns:ns="http://org.apache.synapse/xsd" name="REST_URL_POSTFIX" value="/record/12345" scope="axis2" type="STRING"/>
   <property name="HTTP_METHOD" value="PUT" scope="axis2" type="STRING"/>
   <property name="messageType" value="application/rdf+xml" scope="axis2" type="STRING"/>
   <property name="ContentType" value="application/rdf+xml" scope="axis2" type="STRING"/>
   <property name="CONTENT_TYPE" value="application/rdf+xml" scope="axis2" type="STRING"/>
   <send>
      <endpoint name="CQ">
         <address uri="http://my_url" format="pox">
         </address>
         <property xmlns:ns="http://org.apache.synapse/xsd" name="Authorization" expression="fn:concat('Basic ', base64Encode('username:password'))" scope="transport"/>
         <property name="OSLC-Core-Version" value="2.0" scope="transport"/>
         <property name="Accept" value="application/rdf+xml" scope="transport"/>
      </endpoint>
   </send>

TCPMon でテストしましたが、使用する Content-type プロパティに関係なく、リクエストにはまだ「application/xml」が含まれています。

ご意見をお聞かせください。

4

4 に答える 4

1

添付した構成では、アドレス uri の形式を "pox" として指定しました。

<address uri="http://my_url" format="pox">

これが、常に application/xml として content-type を取得する理由になります。この属性を削除して試してください。そのはず

<address uri="http://my_url">

問題が解決しない場合は、RaviU の提案に従って NHTTP トランスポートに切り替えてみてください。そのためには、最初に axis2.xml (ESB_HOME/repository/conf/axis2/axis2.xml) を axis2_back.xml としてバックアップしてから、axis2_nhttp.xml ファイル (同じ場所) の名前を axis2.xml に変更します。

于 2013-06-20T06:10:41.807 に答える
0

場合によっては、これらのメッセージ フォーマッタを使用する前に、axis2.xml で有効にする必要があります。

この記事をチェックしてください。まだ行っていない場合は、役立つ場合があります。
http://wso2.com/library/articles/axis2-configuration-part2-learning-axis2-xml#mf

于 2013-06-19T16:49:58.750 に答える
0

このようにコンテンツ タイプ プロパティを設定できますか。

 <property name="Content-Type” value="application/rdf+xml" scope="transport"/>

他の content-type プロパティを削除してください..

このように定義すると;

 [1]<property name="messageType" value="application/rdf+xml" scope="axis2" type="STRING"/>
   [2]<property name="ContentType" value="application/rdf+xml" scope="axis2" type="STRING"/>

[1] for、メッセージフォーマッタを選択する

[2] for、メッセージビルダーを選択する

編集; このようにしてみてください

 <inSequence>
            <log level="custom">
               <property name="in seq --------------of proxy" expression="$trp:Content-Type"/>
            </log>
            <property name="messageType"
                      value="application/json"
                      scope="axis2"
                      type="STRING"/>
            <property name="Content-Type"
                      value="application/json"
                      scope="transport"
                      type="STRING"/>
            <log level="custom">
               <property name="in seq --------------of proxy" expression="$trp:Content-Type"/>
            </log>
            <send>
               <endpoint>
                  <address uri="http://localhost:5555/com"/>
               </endpoint>
            </send>
于 2013-06-27T12:23:49.987 に答える