我在做這樣的另一臺服務器上的請求:訪問URL以雙斜線與HttpClient的
HttpGet req = new HttpGet("http://example.com//foo");
new DefaultHttpClient().execute(req);
但是,HttpClient的改變example.com//foo
到example.com/foo
,所以其他的服務器(這不是我)不瞭解請求。
我該如何解決這個問題?
我在做這樣的另一臺服務器上的請求:訪問URL以雙斜線與HttpClient的
HttpGet req = new HttpGet("http://example.com//foo");
new DefaultHttpClient().execute(req);
但是,HttpClient的改變example.com//foo
到example.com/foo
,所以其他的服務器(這不是我)不瞭解請求。
我該如何解決這個問題?
這實際上是非法的網址。
您是否嘗試傳遞一個URI而不是String? 你試過/ \ \ /?或者,該網址可能與/default.asp/,/index.html/,/./,/?/,example.com/foo/等同。
否則,您將需要破解源代碼。
雙斜線在URI的路徑部分不合法(請參閱RFC2396,第3.2節,3.4節)。 '//'序列在URI中具有定義的含義,它表示權威組件(服務器)。
我意識到這並不能回答你的問題,但事實上,HttpClient的行爲符合HTTP和URL標準。你正在閱讀的服務器不是。這似乎是以前報告的(https://issues.apache.org/jira/browse/HTTPCLIENT-727)並被HttpClient團隊拋棄。
我也想做同樣的事情,Apache Http客戶端不支持。
我設法使用Netty來完成它。我使用Netty編寫了http客戶端,並且可以使用雙斜槓(//)在路徑中發送請求。我用SnoopClient作爲示例。
HI Bart,你有沒有設法讓這件事情起作用?你是否必須修改HttpClient代碼? –