Dlaczego otrzymuję ten błąd Przedwczesny koniec pliku?
Próbuję przeanalizować iXML response
, ale zawodzę. Początkowo myślałem, żexml
po prostu nie został zwrócony w odpowiedzi, więc spreparowałem poniższy kod z bezpośrednim linkiem do mojegoxml
plik online. Jestem w stanie wydrukowaćXML
na ekranie bez problemów. Jednak kiedy nazywam moją metodę analizy, otrzymujęPrzedwczesny koniec pliku.
Działa, jeśli przekazuję adres URL bezpośrednio:
builder.parse ("");ale kończy się niepowodzeniem, gdy przekazałem strumień wejściowy:
builder.parse (connection.getInputStream ());
<code> try { URL url = new URL(xml); URLConnection uc = url.openConnection(); HttpURLConnection connection = (HttpURLConnection )uc; connection.setDoInput(true); connection.setDoOutput(true); InputStream instream; InputSource source; //get XML from InputStream if(connection.getResponseCode()>= 200){ connection.connect(); instream = connection.getInputStream(); parseDoc(instream); } else{ instream = connection.getErrorStream(); } } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } static void parseDoc(InputStream instream) throws ParserConfigurationException, SAXException, IOException{ BufferedReader buff_read = new BufferedReader(new InputStreamReader(instream,"UTF-8")); String inputLine = null; while((inputLine = buff_read.readLine())!= null){ System.out.println(inputLine); } DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance(); factory.isIgnoringElementContentWhitespace(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(instream); } </code>
Błędy, które otrzymuję:
<code> [Fatal Error] :1:1: Premature end of file. org.xml.sax.SAXParseException: Premature end of file. at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source) at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source) at javax.xml.parsers.DocumentBuilder.parse(Unknown Source) at com.ameba.api.network.MainApp.parseDoc(MainApp.java:78) at com.ameba.api.network.MainApp.main(MainApp.java:41) </code>