2016-07-07 59 views
1

獲取XML我有以下問題:MalformedURLException的從Java服務器

try { 
     String uri = "http://servername/ReportServer?%2fCool%Page&rs:Command=Render&rs:Format=XML&mandantId=2000"; 
     URL url = new URL(uri); 

     URLConnection conn = url.openConnection(); 

     DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder builder = factory.newDocumentBuilder(); 
     Document doc = builder.parse(conn.getInputStream()); 

     TransformerFactory tFactory = TransformerFactory.newInstance(); 
     Transformer xform = tFactory.newTransformer(); 

     xform.transform(new DOMSource(doc), new StreamResult(System.out)); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

現在,我得到

java.net.MalformedURLException: no protocol: servername/ReportServer?%2fCool%Page&rs:Command=Render&rs:Format=XML&mandantId=2000 

我想在java中的XML內容。如果我在瀏覽器中輸入網址,我會將xml作爲下載文件。我不知道爲什麼我得到這個錯誤。有人知道如何解決這個問題?

+0

最有可能你的瀏覽器( 「HTTP」,或 「https」)自動添加的協議。另外,我不認爲你提供的URI實際上是可以解析的(不僅協議丟失,而且也沒有給出頂級域名)。 – dr0i

+0

現在我已將「http」添加到URL字符串。現在他沒有拋出異常,但他什麼都不做。爲什麼他不system.out內容? –

+0

而URL正在瀏覽器中運行!我實際上更改了名稱,但它在瀏覽器中正常工作,我得到了我的xml文件 –

回答

1

你忘了在URL中定義協議。

協議處理程序以下協議,保證搜索路徑上存在 : -

http, https, ftp, file, and jar 

從Java API文檔的URL: http://docs.oracle.com/javase/7/docs/api/java/net/URL.html

public URL(String spec) 
    throws MalformedURLException 

從中創建一個URL對象字符串表示。這個構造函數 等同於對第一個參數爲null的雙參數構造函數的調用。

參數:

  • 規範 - 字符串解析爲一個URL。

拋出:

  • MalformedURLException的 - 如果未指定協議,或未知協議被發現,或規格爲空。

你應該有這樣的事情(例如使用HTTP):

String uri = "http://servername/ReportServer?%2fCool%Page&rs:Command=Render&rs:Format=XML&mandantId=2000"; 
+0

感謝您的回覆,但我已經添加了它。現在錯誤消失了,但我沒有得到我的XML文件。 Theres沒有輸出。 –

+0

謝謝你,你是對的。現在我遇到了文檔生成器的問題,但我可以完成剩下的工作。謝謝你的幫助! –