2017-08-01 100 views
0

我要將http post請求重定向到另一個服務器(只是更改url和一些標題)並使用Servlet來達到此目的。 在Servlet中,我使用HttpClient發送請求並獲得響應。 問題是:這些操作是否會將整個發佈請求發送給目標? :使用httpservletrequest攔截http post

  1. 複製的HttpServletRequest報頭插入HttpClient的請求

  2. ,然後把的HttpServletRequest#的inputStream在請求實體是這樣的:

    HttpEntity實體=新InputStreamEntity(httpServletRequest.getInputStream(),someContentType);

我的意思是request = headers + input stream?如果不是,還應該複製哪些內容?

回答

0

只要是同一頁上有關術語:

  1. 重定向是有關發送請求發起到另一個URL。這不是你正在解釋的。
  2. 轉發即將轉到另一個內部網址,無需請求發件人知道任何東西。從發起者的角度來看,響應來自它所要求的url。這不是您的示例代碼試圖執行的操作
  3. 您的代碼在其他位置執行reuqest作爲發起者請求處理的一部分。這就是你的代碼似乎是通過使用特定的框架,如Apache httpclient。但是你試圖通過重用原始請求中的inputstream來做到這一點,你不應該這樣做。

如果您想向請求添加標頭,重定向不是選項afaik。 如果你想轉發到另一個外部URL,轉發不是一個選項。

因此,您需要對其他網站執行新的http請求,作爲原始請求處理的一部分。但是您必須處理該原始請求以提取您需要的任何信息(而不是嘗試重新使用輸入流)。

+0

當前我正在重複使用輸入流,並在多部分文章和表單文章中使用everthing。但我不確定這種機制是否適用於所有情況 – redbeard1970