2016-12-04 100 views
1

我正在使用Apache camel實現SOA集成層。在駝峯路由中發送POST請求

但我有一些問題,當我試圖發送POST請求到外部Web服務。

這是我的駱駝航線:

from("jetty:http://localhost:5000/plus_grand") 
    .setHeader(Exchange.HTTP_METHOD , constant("POST")) 
    .to("http://localhost/sub?bridgeEndpoint=false&throwExceptionOnFailure=false") 

http://localhost/sub是一個簡單的PHP頁面。此頁面打印請求信息。

代碼:

echo "<pre>"; 
    print_r($_SERVER); 
echo "</pre>"; 
當我試圖運行

,我得到這樣的結果:

Array 
(
    [HTTP_HOST] => localhost 
    [HTTP_USER_AGENT] => Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0 
    [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
    [HTTP_ACCEPT_LANGUAGE] => en-US,en;q=0.5 
    [HTTP_ACCEPT_ENCODING] => gzip, deflate 
    [HTTP_COOKIE] => csrftoken=rqcFAHftMkWsDEoLudTWIjPseAU7sJ40; oauth_consumer_key=136a3fd63028e1d157c6b939bcbe771c2dfe5710 
    [HTTP_CONNECTION] => keep-alive 
    [PATH] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 
    [SERVER_SIGNATURE] => 
Apache/2.4.7 (Ubuntu) Server at localhost Port 80 


    [SERVER_SOFTWARE] => Apache/2.4.7 (Ubuntu) 
    [SERVER_NAME] => localhost 
    [SERVER_ADDR] => 127.0.0.1 
    [SERVER_PORT] => 80 
    [REMOTE_ADDR] => 127.0.0.1 
    [DOCUMENT_ROOT] => /var/www/html 
    [REQUEST_SCHEME] => http 
    [CONTEXT_PREFIX] => 
    [CONTEXT_DOCUMENT_ROOT] => /var/www/html 
    [SERVER_ADMIN] => [email protected] 
    [SCRIPT_FILENAME] => /var/www/html/sub/index.php 
    [REMOTE_PORT] => 38604 
    [GATEWAY_INTERFACE] => CGI/1.1 
    [SERVER_PROTOCOL] => HTTP/1.1 
    [REQUEST_METHOD] => GET 
    [QUERY_STRING] => 
    [REQUEST_URI] => /sub/ 
    [SCRIPT_NAME] => /sub/index.php 
    [PHP_SELF] => /sub/index.php 
    [REQUEST_TIME_FLOAT] => 1480887502.957 
    [REQUEST_TIME] => 1480887502 
) 

可以看到,請求方法是GET

請問是什麼問題。

回答

1

您的路由連接到基於http v3.x客戶端庫的較舊的http組件。建議以http4:// ..作爲終點。

from("direct:start") 
.setHeader(Exchange.HTTP_METHOD,constant(org.apache.camel.component.http4.HttpMethods.POST)) 
    .to("http4://www.google.com") 

REF:http://camel.apache.org/http4.html

然後每例如使用預定義的常數