2016-03-23 7 views
1

CamelはURL Paramsをデコードします。私は私がで送信されたURLを取得する方法はあります 私はシナリオ(春のXML &キャメル)の下にあります。ラクダがクエリパラメータをデコードできないようにすることはできますか?

<route id="getDepResources"> 
     <from uri="restlet:/dep/{depId}/resources?restletMethods=GET"/> 
<bean ref="deptUtility" method="process" /> 
</route> 

public void process(Exchange exchange) throws Exception { 

    Message message = exchange.getIn(); 
    String body = message.getBody(String.class); 
    String uri = message.getHeader(Exchange.HTTP_URI, String.class); 
...... 
} 

curl -X GET 'http://localhost:8080/app1/dep/1/resources?resourceDesc=R%26B' --header "Content-Type:application/json" 

のでresourceDesc = R%のため26B(R & B)私はRとしてそれを取得する必要があります%26Bですが、私が得た3行目のURIはhttp://localhost:8080/app1/dep/1/resources?resourceDesc=R&Bですが、それはhttp://localhost:8080/app1/dep/1/resources?resourceDesc=R%26Bであるはずです。同じ方法や他の方法でできる設定はありますか?提案してください。

答えて

0

これはラクダとは直接関係がありません。これはURIの指定に関連しています。つまり、URIはUAでデコードする必要があります。

そのまま取得したい場合は、パーセント記号を引用する必要があります。 %の見積もりは%25

+0

です。申し訳ありませんが、&26%i:e resourceDesc = R%26B(R&Bは実際のテキストです)として追加されています。私はそれを&26ではなく%26にしたいと思っています(そのままURLを維持してください) – JD7

+0

message.getHeader(Exchange.HTTP_QUERY、String.class)も同じです。 – JD7

+0

それはラクダに関連しているので、URIは以前にデコードされています。アプリケーションでR%26Bを取得するには、%、 'R%2526B'をエンコードする必要があります。 –

関連する問題