Hallo! Wir haben als Aufgabe bekommen, dass wir einen Server schreiben, der sich die HTML einer Seite holt, die img tags sucht und sie für eine beliebige bilddatei von uns ersetzt.
So alles schön und gut, es klappt auf Firefox. Allerdings sollen wir es in Google Chrome vorführen und da bekomme ich zum einen leere Seiten und zum anderen immer wieder folgenden Exception:
Ich verstehe nicht wie ich das zum laufen bringen kann auf Chrome...
Der Code dazu hier:
So alles schön und gut, es klappt auf Firefox. Allerdings sollen wir es in Google Chrome vorführen und da bekomme ich zum einen leere Seiten und zum anderen immer wieder folgenden Exception:
java.io.FileNotFoundException: 404 Not Found
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at TCPServer_2.serveClient(TCPServer_2.java:88)
at TCPServer_2.access$0(TCPServer_2.java:51)
at TCPServer_2$1.run(TCPServer_2.java:38)
at java.lang.Thread.run(Unknown Source)
Ich verstehe nicht wie ich das zum laufen bringen kann auf Chrome...
Der Code dazu hier:
Java:
/**
*
*/
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.URL;
import java.util.regex.Pattern;
public class TCPServer_2 {
String host = null;
public static void main(String[] args) {
TCPServer_2 s = new TCPServer_2();
s.startServer();
}
void startServer() {
ServerSocket serverSocket;
try {
serverSocket = new ServerSocket(8082, 10);
while (true) {
System.out.println("Server: waiting for client connection");
final Socket aClientConnection = serverSocket.accept();
Thread aThread = new Thread(new Runnable() {
@Override
public void run() {
try {
serveClient(aClientConnection);
} catch (IOException e) {
e.printStackTrace();
}
}
});
aThread.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
private void serveClient(final Socket aClientConnection) throws IOException {
BufferedReader fromClient;
BufferedWriter toClient;
BufferedReader fromServer;
HttpURLConnection con;
URL url;
String header=null;
String adresse = null;
fromClient = new BufferedReader(new InputStreamReader(aClientConnection.getInputStream()));
toClient = new BufferedWriter(new OutputStreamWriter(aClientConnection.getOutputStream()));
header = fromClient.readLine();
System.out.println(header + "halllllo");
if(Pattern.matches("GET /www.*", header)) {
adresse = (header.replaceAll("GET /www.", ""));
adresse = (adresse.replaceAll("HTTP/1..", ""));
adresse = (adresse.replaceAll(" ", ""));
host = "http://" + adresse + "/";
adresse = host;
}
else {
// System.out.println();
adresse = (header.replaceAll("GET /", ""));
adresse = (adresse.replaceAll("HTTP/1..", ""));
adresse = (adresse.replaceAll(" ", ""));
adresse = host + adresse;
}
try {
url = new URL(adresse);
con = (HttpURLConnection) url.openConnection();
fromServer = new BufferedReader(new InputStreamReader(con.getInputStream()));
String msg;
String regex = "(<img src=\"?.*[png|jpg|gif|bmp|jpeg]\"?\\s)|(<img src=\"?.*[png|jpg|gif|bmp|jpeg]\"?)";
String replace = "<img src=\"http://fi.cs.hm.edu/fi/hm-logo.png\" ";
String head = "";
int i = 0;
while(con.getHeaderField(i) != null) {
if(con.getHeaderFieldKey(i) == null) {
head = head + con.getHeaderField(i);
}
else {
head = head + con.getHeaderFieldKey(i) + ": " + con.getHeaderField(i);
}
i += 1;
head = head + "\n";
}
head = head + "\r\n";
System.out.println(head);
toClient.write(head);
toClient.flush();
while ((msg=fromServer.readLine()) != null) {
toClient.write(msg.replaceAll(regex, replace));
}
toClient.flush();
} catch (IOException e) {
e.printStackTrace();
}
aClientConnection.close();
}
}