HTTP-Server - Problem beim versenden von Sonderzeichen
Hoi,
Folgendes Problem:
Ich habe mir ein kleines programm geschrieben, um das mit dem HTTP-Server von Java zu lernen.
Dabei ist mir aufgefallen, dass das Programm probleme hat, wenn der server sonderzeichen (ä, ö, ü...) in der antwort haben soll.
um es zu verdeutlichen:
wenn man hier im Browser http://localhost:1234/ eingibt, müsste ein einfaches "/" erscheinen. Das funktioniert auch. Wenn man dann mal "localhost:1234/blub" versucht, klappt es auch (es wird "/blub" ausgegeben).
Wenn nun aber z.B. localhost:1234/mööp aufgerufen wird, bleibt das programm. bei
stehen.
Ich konnte das problem soweit einschränken, dass es nur passiert, wenn der server in seiner antwortseite irgendwelche umlaute hat.
kann mir jemand sagen, wie ich das problem umgehen kann?
Hoi,
Folgendes Problem:
Ich habe mir ein kleines programm geschrieben, um das mit dem HTTP-Server von Java zu lernen.
Dabei ist mir aufgefallen, dass das Programm probleme hat, wenn der server sonderzeichen (ä, ö, ü...) in der antwort haben soll.
um es zu verdeutlichen:
Code:
package test;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;
public class HttpServerDemo {
public static void main( String[] args ) throws IOException {
InetSocketAddress sa = new InetSocketAddress(1234);
HttpServer server = HttpServer.create( sa, 0 );
server.createContext( "/", new Responser());
server.start();
}
}
class Responser implements HttpHandler {
public void handle( HttpExchange httpExchange ) throws IOException {
String path = httpExchange.getRequestURI().getPath();
String response = path;
System.out.println("1");
httpExchange.sendResponseHeaders( 200, response.length() );
System.out.println("2");
OutputStream os = httpExchange.getResponseBody();
System.out.println("3");
os.write( response.getBytes() );
System.out.println("4");
os.close();
System.out.println("5");
}
}
wenn man hier im Browser http://localhost:1234/ eingibt, müsste ein einfaches "/" erscheinen. Das funktioniert auch. Wenn man dann mal "localhost:1234/blub" versucht, klappt es auch (es wird "/blub" ausgegeben).
Wenn nun aber z.B. localhost:1234/mööp aufgerufen wird, bleibt das programm. bei
Code:
os.write( response.getBytes() );
Ich konnte das problem soweit einschränken, dass es nur passiert, wenn der server in seiner antwortseite irgendwelche umlaute hat.
kann mir jemand sagen, wie ich das problem umgehen kann?
Zuletzt bearbeitet: