有什麼方法可以在動作類中修改請求頭或設置頭?我想修改它,或者你可以說我想把標誌放在請求標題中,就像我們把值放在'屬性'和參數中一樣。在java中設置請求標頭
回答
您可以使用HttpServletRequestWrapper來做到這一點。但這是非常骯髒的解決方案。真的沒有其他方法可以解決您的問題嗎?
你不能。從servlet返回的請求參數是不可修改的Map
。您不能添加/刪除請求(通過servlet)返回的內容。
爲了設置一個標誌,我的建議是將它存儲在一個會話中,並在另一個動作中,檢索標誌&將其從會話中刪除。
您需要提供更多詳細信息。聽起來你想在服務器收到請求後操縱請求頭。我不確定我明白你爲什麼想這麼做。修改響應頭是有道理的。但不是要求。
其實我想模擬流量。標題由第三方模塊設置。但在本地我想測試的反射,這就是爲什麼我試圖設置請求的標題 – muneebShabbir 2012-01-03 07:34:03
我認爲你需要將原始請求包裝到一個包含你想要的更改的請求類中。
將處理前的請求參數解析爲對您的應用程序邏輯更有意義的對象,然後將這些對象的狀態設置在您現在想要修改原始位置的位置頭。
聽起來不錯...我必須試一試 – muneebShabbir 2012-01-03 07:43:39
你能給我例子我怎麼能包裹我的請求? – muneebShabbir 2012-01-03 07:46:17
我認爲他們只有乾淨的方式,你可以做到這一點是通過HttpServletRequestWrapper
只是覆蓋getHeader,getHeaders,getHeaderNames,你是好去。
如果你試圖打開使用Java, 你可以像這樣What is the proper way of setting headers in a URLConnection?
如果你可以要求使用瀏覽器, 你可以使用這個Firefox插件添加一個URL連接/修改任意數量的請求標頭。
https://addons.mozilla.org/en-US/firefox/addon/modify-headers/
好運
這個問題的答案取決於你要解決什麼問題。
您的一條評論意味着您試圖測試;如果是這種情況,您有兩個基本選項:
- 使用模擬請求(單元式測試)。
- 更改客戶端的頭文件(集成類型測試)。
要從真實客戶端進行測試,請在客戶端設置標頭。
對於嘲笑客戶端的交互,你應該使用某種形式的模擬。例如,StrutsTestCase提供MockStrutsTestCase(容器外)和CactusStrutsTestCase(容器內)類,允許輕鬆處理請求屬性和特性。
- 1. 在ajax中設置請求標頭
- 2. 在Node.js中設置請求標頭
- 3. 在硒中設置請求標頭
- 4. 在URL中設置請求標頭?
- 5. 在JavaScript中設置請求標頭
- 6. 如何在每個請求上設置多個請求標頭
- 7. 設置標頭時HTTParty請求失敗
- 8. swfupload和設置請求標頭
- 9. 如何設置curl的請求標頭?
- 10. PHP file_get_contents()和設置請求標頭
- 11. 爲WebClient請求設置User-Agent標頭
- 12. NSURL請求設置HTTP標頭
- 13. 設置http請求消息標頭ios
- 14. 設置鏈接的請求標頭
- 15. 爲Django設置AJAX請求標頭
- 16. 如何設置原始請求標頭
- 17. 設置請求頭:連接
- 18. 如何在請求標題被加載到iframe之前設置請求標頭
- 19. StringContentProvider是否在HTTP請求中設置Content-Type標頭?
- 20. 如何在behat測試中設置請求標頭?
- 21. 在驅動器請求中設置HTTP標頭
- 22. 在HTTP請求標頭中設置LTPA令牌
- 23. 在Cordova應用程序中設置User-Agent請求標頭
- 24. 在Angular2 HTTP POST中設置JSON請求標頭
- 25. 在Ruby on Rails中爲Rspec和Rack :: Test設置請求標頭
- 26. 如何在nginx中設置請求接受標頭?
- 27. 在PDF.JS請求中設置自定義標頭
- 28. 在Alloy UI(AUI)中設置Accept標頭AJAX請求
- 29. 在Flask測試中爲所有請求設置HTTP標頭
- 30. 在SenchaTouch中爲Ext.data.Store代理設置請求標頭
這意味着我只能從請求中獲取數據。單向數據移動 – muneebShabbir 2012-01-03 07:31:32
是的,因爲請求是從客戶端發送到服務器的數據。把它看作是客戶給你發送真正的信息。如果我們有機會操縱標題請求,那麼任何人都可以通過代碼來欺騙它。等等,這是可能的,但對於Servlet,容器不應該允許這樣做。 – 2012-01-03 07:44:54
你的意思是容器?我在struts-1中工作,並嘗試修改操作類 – muneebShabbir 2012-01-03 07:48:20