2017-10-26 4 views
1

私はESBで定義したAPIの内部からHTTPヘッダーを読み取ろうとしています。私はさまざまな方法を試しました(下記参照)。それらのすべてがログに "null"を表示します。APIリソースのHTTPヘッダーを読み取ることができません

<log level="custom"> 
    <property name="LOG-POSITION___________________________" value="...4"/> 
    <property name="AXIS2___________________________" expression="$axis2:accept"/> 
    <property name="AXIS2___________________________" expression="$axis2:Accept"/> 
    <property name="AXIS2___________________________" expression="$axis2:ACCEPT"/> 
    <property name="CTX___________________________" expression="$ctx:accept"/> 
    <property name="CTX___________________________" expression="$ctx:Accept"/> 
    <property name="CTX___________________________" expression="$ctx:ACCEPT"/> 
    <property name="TRP___________________________" expression="$trp:accept"/> 
    <property name="TRP___________________________" expression="$trp:Accept"/> 
    <property name="TRP___________________________" expression="$trp:ACCEPT"/> 
</log> 

なぜ動作しないのかわかりません。

+0

expression = "$ trp:Accept"は動作するはずです。 – Bee

答えて

0

以下は、コンテンツタイプのhttpヘッダーを読み込んでログに記録するシナプスコードです。ここでは$trpはトランスポートヘッダーの略です。

<log level="custom"> 
    <property name="Content_Type" expression="$trp:Content-Type"/> 
</log> 

参考:https://docs.wso2.com/display/ESB500/Synapse+XPath+Variables

それが動作しない場合は、enable wire logs、問題のログを投稿してください。

0

私は、既存のコードを見て試行錯誤して答えを見つけました。

"$ trp:Accept"という表現は機能しますが、コールまたはメディエータを送信する前に使用する必要があります。

この問題が発生している他の人は、プロパティメディエータを移動してプロキシまたはapiの先頭に移動し、値を渡す必要があります。

+0

はい、メディエータを呼び出して送信した後、古いヘッダーは新しい応答の新しいヘッダーに置き換えられます。 – Bee

関連する問題