我正在寫ProxyServer
,首先我用ServerSocket
來獲得連接到我的Socket
。然後我從Socket
得到InputStream
,並將其付諸實施。我已經輸出我的瀏覽器的請求控制檯:Java:在我的代理服務器中處理瀏覽器的請求
GET http://mail.ru/ HTTP/1.1
Host: mail.ru
Proxy-Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/31.0.1650.63 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: p=7nkAAOS6hAAA; mrcu=7D86524D326C5CB36F898F4A4CD9;
_ga=GA1.2.1174941236.1388398432; c=PCwPUwAAAPKbAAAiAgAAcQAAz5QIAgAA;
我必須創建新的Socket
寫這個請求,互聯網,但是需要插座端口號和主機名(字符串)進行連接。
如果我們認爲端口號總是80
那麼從這個請求的哪一部分我必須得到主機名?這是GET http://mail.ru/ HTTP/1.1
還是Host: mail.ru
?
另外,我可以只發送到互聯網GET http://mail.ru/ HTTP/1.1
放棄其他部分?
最後一個問題是,我是否必須重寫這個GET
方法本身?
如果它應該是HTTP代理,然後獲取HOST頭。並且您將所有數據傳遞給傳出流並將其複製回傳入流。順便說一句,你必須照顧分塊與瀏覽器有廣泛的兼容性。 –
好吧,我會採取主機頭,我應該重寫GET http://mail.ru/ HTTP/1.1? –
如何重寫?只需將輸入複製到目標輸出以獲取基本功能。 –