2012-09-18 72 views
2

我正在從Web服務讀取數據。這個問題,如果我把它的鏈接在瀏覽器上工作正常。當我這樣跑時給我錯誤。我懷疑這是由於我如何發送我的參數。我的參數列表有dID=1,5,7,11,14,18,26&FromDate=18 Sep 2012 00:00 am&ToDate=18 Sep 2012 10:00 am。我需要在這裏做一些編碼嗎?服務器返回的HTTP響應代碼:400

URL xmlURLDM = new URL(urlDM); 
InputStream xml2 = xmlURLDM.openStream(); 

我得到這個錯誤

java.io.IOException: Server returned HTTP response code: 400 for URL: 
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1612) 
     at java.net.URL.openStream(URL.java:1035) 
     at xmlreader.main(xmlreader.java:172) 
+0

什麼的'urlDM'應該是前? –

+0

這是一個url字符串。例如http:// url ....?dID = 1,5,7,11,14,18,26&FromDate = 2012年9月18日00:00上午&ToDate = 2012年9月18日上午10:00 – user837306

回答

6

你確實需要編碼,最likley它是在你的網址,是造成麻煩的空間。 使用內置在網址編碼中的Java。例如:編碼爲URL

String encoded = URLEncoder.encode(myUrl, "UTF-8"); 

... 調用Web服務也有其他的原因狀態代碼是400,但這個編碼問題可能是你的第一個攔路虎。

+1

如果我完成整個網址,錯誤,所以我只是做FromDate和ToDate值,然後將它加回原始字符串併發送爲url是正確的? – user837306

+1

我得到這個錯誤,如果我把整個網址java.net.MalformedURLException:沒有協議:。 – user837306

1

URL says的文檔,

URL類本身不進行編碼或根據在RFC2396中定義的逃逸機制解碼任何URL部件 。調用者負責編碼任何字段,在調用URL之前需要轉義 ,並解碼從URL返回的任何轉義字段 。此外,因爲URL不知道URL轉義的 ,所以它不識別編碼的 或相同URL的解碼形式之間的等同性。

所以請使用URLEncoder.encode()調用URL()

相關問題