2012-05-10 68 views
0

我做了一個Http請求,這是請求頭的樣子:的Http request.getIntHeader()返回的NumberFormat異常

GET /unni/servlets/servlet/HelloWorldExample HTTP/1.1 
Host: localhost:8700 
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: en-us,en;q=0.5 
Accept-Encoding: gzip, deflate 
Connection: keep-alive 
Cache-Control: max-age=0 

然後,我只是用request.getIntHeader("User-Agent")。這一次我有一個NumberFormatException說, '請求標頭 不能轉換爲整數'。這是API和servlet規範說的。我搜索了更多關於這個來獲得一些工作示例,但沒有得到任何期望的結果。所以,我該如何使用這種方法?我正在使用Apache Tomcat 7.0.25

在此先感謝。

回答

3

帶鍵「User_Agent」的標題包含混合日期類型值(String和Integer的組合),在你的情況下它是:User-Agent:Mozilla/5.0(Windows NT 6.1; rv:12.0)Gecko/20100101 Firefox/12.0。

如果您試圖將此值設置爲Integer,您肯定會得到NumberFormatException(因爲頭值也包含非數值)。

您只能將request.getIntHeader()應用於包含純數字值的頭部。 您可以使用數值定義您自己的標題鍵,並使用request.getIntHeader()檢索它。

+0

感謝您的答覆。我有一個誤解,它可以適用於所有標題,直到我讀到您的答案。 – UVM

+0

你可以嘗試通過嘗試我的答案來解決這個問題,無論如何... – Carlo

0

我不明白,在User-Agent頭是一個字符串,你可以檢索它像
String userAgent = request.getHeader("User-Agent");
還是我失去了你的問題的呢?

+0

除了普通的方法,HttpServletRequest接口中還有一個名爲getIntHeader(「String」)的方法。這將返回整數。請查看servlet API以獲取更多信息 – UVM

+2

我知道,但是引用API「以int形式返回指定請求頭的值。」用戶代理是一個字符串,所以你應該嘗試我在答案中提出的建議。 – Carlo