2011-04-14 46 views
0

我已經實現了簡單的com.sun.net.httpserver.HttpServer應用程序,使用互聯網中的一個示例 服務器根據預期獲取請求,除了一個例外: 如果url包含tspecials:「或'<'」/「請求根本沒有到達服務器。 使用簡單的java.net.ServerSocket所有工作都很好,請求收到所有tspesials編碼,這對我很好,但我更喜歡使用HttpServer。如何在HTTP服務器的URL中包含tspecials(<,「等)?

例如請求:http://127.0.0.1/MyApp/Test?var=<xml ID = 「 「 1值> </XML > 作品的ServerSocket和不工作的HttpServer的。

任何幫助將不勝感激。

+0

我無法修改客戶端請求 – yan 2011-04-14 06:49:58

回答

0

你需要編碼在客戶端上你的URL,使用%表示法:

http://127.0.0.1/MyApp/Test?var=%3Cxml+id%3D%271%27%3Evalue%3C%2Fxml%3E

在服務器端,你應該使用的情況下URI.getRawQuery()查詢包含&字符,並使用URLDecoder.decode解碼參數值。

+0

謝謝,爲什麼當我使用ServerSocket時,我不需要這樣做,並請求實現服務器已經完全按照您的示例編碼,我認爲問題出在HttpServer – yan 2011-04-14 06:56:36

+0

With a ServerSocket你必須實現你自己的http協議。如果您的實現不需要url編碼,那麼它不符合標準。所以如果你想實現http,HttpServer是好的;如果你想實現一個自定義協議,你將需要提供它的實現。 – 2011-04-14 07:01:56

+0

IE編碼的網址和我的服務器應該得到Url已經編碼 – yan 2011-04-14 07:23:51