2013-10-29 132 views
0

我目前在我的應用程序中運行一個碼頭web服務器。其中一個客戶使用HttpPost來調用我的這個。絕對URL .. 400壞請求

有時會起作用,有時會得到HTTP 400 BAD請求。

這些日誌

About to connect() to 10.184.209.142 port 8080 
Trying 10.184.209.142... 
Connected to 10.184.209.142 (10.184.209.142) port 8080 
POST /CSCIntegration HTTP/1.1 
User-Agent: CSC Test 
Host: 10.184.209.142:8080 
Accept: */* 
From: [email protected] 
Connection: close 
Content-Type: text/xml; charset=utf-8 
Content-Length: 440 

如果我使用的是Junit的我看不出有任何問題,運行相同。

是否因爲HttpPost中丟失的斜線? 此錯誤是否由於jetty issue

回答

0

是否因爲HttpPost中丟失的斜線?這是由於碼頭問題導致的錯誤?

可能。這取決於兩件事情:

  • 無論您使用的舊版本的Jetty沒有修復該問題。如果您閱讀linked bugzilla entry,則該錯誤在一年前已修復。

  • 客戶端是否使用缺少尾部斜槓的URL。

如果我使用的是Junit的我看不出有任何問題,運行相同。

現在還不清楚你在說什麼。

  • 如果你是說,你可以用手重現該問題,但不是一個JUnit測試(這是設計重現此),檢查正在使用碼頭的同一版本在測試中和你的生產系統。然後檢查配置的差異。

  • 如果您只是說您的JUnit測試不包括此問題,那麼解決方案顯而易見。寫一個新的測試,確實掩蓋它!

如果這些都沒有幫助,那麼您應該考慮將調試器附加到您的生產服務器(ouch!)以找出實際發生的事情。

+0

當前我正在使用jetty-7.4.4.v20110707,並且此錯誤在jetty的更高版本中得到修復。我寫Junit的方法是啓動jetty服務器(與prod中使用的代碼相同),然後在端口8080上本地調用它,如下所示: – Ikshvak

+0

StringEntity se = new StringEntity(「data」)\t se。 setContentType(new BasicHeader(HTTP.CONTENT_TYPE,「text/xml」)); HttpPost post = new HttpPost(「http:// localhost:8888/CSCIntegration」); (se); post.setEntity(se); post.setHeader(「Accept」,「text/xml」); post.setHeader(「Content-Type」,「text/xml; charset = UTF-8」); response = client.execute(post); – Ikshvak

+0

使用Jetty -7.4以這種方式運行時。4在使用URL localhost:8888/CSCIntegration調用它時,我看不到任何問題。所以我不確定這是否真的是因爲URL末尾的斜線。 – Ikshvak