2016-07-07 5 views
1

Ich habe folgendes Problem:MalformedURLException Java erhalten XML von Server

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(); 
    } 

Jetzt bekomme ich

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

Ich möchte die XML-Inhalte in Java erhalten. Wenn ich die URL in den Browser eintippe, erhalte ich die XML als Download. Ich weiß nicht, warum ich diesen Fehler bekomme. Kann jemand dieses Problem lösen?

+0

Wahrscheinlich Ihr Browser fügt das Protokoll ("http" oder "https") automatisch. Außerdem glaube ich nicht, dass der von Ihnen bereitgestellte URI tatsächlich auflösbar ist (nicht nur das Protokoll fehlt, es wird auch keine Top-Level-Domain angegeben). – dr0i

+0

Jetzt habe ich "http" zum URL-String hinzugefügt. Jetzt wirft er keine Ausnahme, aber er tut auch nichts. Warum er den Inhalt nicht systematisiert? –

+0

Und die URL funktioniert im Browser! Ich habe die Namen geändert, aber es funktioniert gut im Browser und ich bekomme meine XML-Datei –

Antwort

1

Sie haben vergessen, das Protokoll in Ihrer URL zu definieren.

Protokoll-Handler für die folgenden Protokolle sind garantiert auf dem Suchpfad existieren: -

http, https, ftp, file, and jar 

Von Java-API-Dokumentation für URL: http://docs.oracle.com/javase/7/docs/api/java/net/URL.html

public URL(String spec) 
    throws MalformedURLException 

Erstellt ein URL-Objekt von der String-Darstellung Dieser Konstruktor entspricht einem Aufruf des Konstruktors mit zwei Argumenten mit einem Null-Argument .

Parameter:

  • spec - der String als URL zu analysieren.

Würfe:

  • MalformedURLException - wenn kein Protokoll angegeben ist, oder ein unbekanntes Protokoll gefunden wird, oder spec ist null.

Sie sollten so etwas wie (zB mit HTTP) haben:

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

Vielen Dank für Ihre Antwort, aber ich habe es bereits hinzugefügt. Jetzt ist der Fehler verschwunden, aber ich bekomme meine XML-Datei nicht. Theres keine Ausgabe. –

+0

Danke, du hattest Recht. Jetzt habe ich Probleme mit dem Docbuilder, aber ich kann den Rest erledigen. Danke für Ihre Hilfe! –