Servlet um Datei von URL auszulesen

mongrel

Grünschnabel
Hallo Freunde,

kann mir jemand bitte helfen?

Ich möchte ein Servlet schreiben, welches eine Datei(HTML) auf einem anderen Server ausliest und ausgibt.
Sprich, ich möchte dann die Datei in einem 2. Schritt auslesen bzw. nach Dingen durchsuchen lassen.

Hat jemand einen Link für mich, oder kann mir helfen?

Hier dies, was ich momentan habe:
Code:
public class Filler extends HttpServlet {
  public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
				response.setContentType("text/html");
	PrintWriter out = response.getWriter();
	BufferedReader reader = null;
	
	
	String fileUrl = "http://www.test.de/index.html";
	
	
	try {
		reader = new BufferedReader
		 (new InputStreamReader
		   ( ( new URL(fileUrl) ).openStream(), "8859_1" ) );

	  String line = reader.readLine();
	  while(line != null) {
		out.println(line);
		line = reader.readLine();
	
	  }
	} catch(Throwable t) {
	  out.println("<HTML>");
	  out.println("<HEAD<<TITLE<</TITLE<</HEAD<");
	  out.println("<BODY<");
	  out.println("<pre<");
	  t.printStackTrace(out);
	  out.println("</pre<");
	  out.println("</BODY<");
	  out.println("</HTML<");
	} finally {
	  try {
		reader.close();
	  } catch(Exception ex) {}
	}	
  }
}

Vielen Dank

AL
 
Hallo mongrel,

sieht für den Anfang doch nicht schlecht aus. In der while Schleife wird auch schon der Inhalt der HTML Seite ausgegeben. Nehme ich an?

Dann müsstest Du innerhalb der while Schleife den Inhalt parsen. Dazu bieten sich Regular Expressions an.
 
Ja, so dachte ich auch!

Aber er gibt mir ne Fehlermeldung aus, mit der ich nun gar nichts anfangen kann:
Code:
(HttpClient.java:306) at sun.net.www.http.HttpClient.(HttpClient.java:267) at sun.net.www.http.HttpClient.New(HttpClient.java:339) at sun.net.www.http.HttpClient.New(HttpClient.java:320) at sun.net.www.http.HttpClient.New(HttpClient.java:315) at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:521) at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:498) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:626) at java.net.URL.openStream(URL.java:913) at src.Filler.doGet(Filler.java:29) at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at com.sap.engine.services.servlets_jsp.server.servlet.InvokerServlet.service(InvokerServlet.java:156) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet

Dahinter gehts dann noch paar Zeilen weiter und er haut mir das </html> und so raus.
Das heißt er geht in die Fehlerbehandlung schon rein!

Aber warum liest der die Datei nicht?!

Viele Grüße

mongrel
 
Würdest Du bitte mal den ganzen Stacktrace posten? Der könnt z.b. so aussehen:
Code:
java.net.UnknownHostException: www.test.de
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:177)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
	at java.net.Socket.connect(Socket.java:519)
	at java.net.Socket.connect(Socket.java:469)
	at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
	at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
	at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
	at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
	at sun.net.www.http.HttpClient.New(HttpClient.java:306)
	at sun.net.www.http.HttpClient.New(HttpClient.java:323)
	at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:790)
	at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:731)
	at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:656)
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:979)
	at java.net.URL.openStream(URL.java:1009)
	at de.tutorials.url.Reader.doGet(Reader.java:15)
	at de.tutorials.url.Reader.main(Reader.java:41)
Am interessantesten bei so einer Exception ist immer die erste Zeile, also die bevor mit einem Tab eingerückt wird und etwa die ersten drei eingerückten Zeilen darunter ...
 
hab es nun auf meine Datei laufen lassen und folgenden Code erhalten:
Code:
HEAD<<TITLE<</TITLE<</HEAD< <BODY< <pre< java.io.IOException: Server returned HTTP response code: 400 for URL: http://www.test.de/index.html at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:814) at java.net.URL.openStream(URL.java:913) at src.Filler.doGet(Filler.java:29) at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at com.sap.engine.services.servlets_jsp.server.servlet.InvokerServlet.service(InvokerServlet.java:156) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:401) at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:266) at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:386) at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:364) at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:1039) at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:265) at com.sap.engine.services.httpserver.server.Client.handle(Client.java:95) at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:175) at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33) at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41) at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37) at java.security.AccessController.doPrivileged(Native Method) at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:102) at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:172) </pre< </BODY< </HTML<
 
Zuletzt bearbeitet:
Okay okay, es t

Habe die Portangabe beim Pfad vergessen!

Also Leute, der Code oben ist richtig und geht.

Jetzt wird es erstmal ein Spaß den 2. Schritt zu realisieren.
Seit froh, dass ihr das HTML nicht kennt.

Grüße

mongrel
 

Neue Beiträge

Zurück