Ich habe einen Code für einen HTTP-Server geschrieben, der eine Antwort an den Client basierend auf der Clienteingabe senden soll.Nicht in der Lage, Eingabestreamdaten von httpExchange abzurufen
Ich habe den gleichen Code zweimal geschrieben, einmal mit einfachen Socket-Verbindung und der zweite mit com.sun.net.httpserver
.
Der Code basiert auf der einfachen Steckdose funktioniert gut und ich bin in der Lage die Anforderungen kommen vom Client zu lesen mit:
DataInputStream in = new DataInputStream (threadSocket.getInputStream());
int ln = in.available();
byte [] bytes = new byte [ln];
in.read(bytes);
String msg = new String(bytes);
Allerdings, wenn ich die Http zu verwenden, versuche ich kann nicht jede Eingabe erhalten vom Kunden.
Dies ist der Code für den HTTP-Server Hendler:
static class ntripHandler implements HttpHandler {
public void handle(HttpExchange t){
try {
int ln = t.getRequestBody().available();
byte [] bt = new byte [ln];
t.getRequestBody().read(bt);
String msg = new String(bt);
System.out.println(msg);
}
catch (IOException ex) {System.out.println(ex);}
//// some operations sholuld be made here .......
}
}
Derzeit Ich versuche, den Eingangsstrom aus dem HttpExchange.getRequestBody()
zu verwenden, aber es ist immer null. Ich habe auch versucht, die httpExchange.getRequestURI().getQuery()
, aber es ist auch immer Null.
Die Eingabe vom Client sieht wie folgt aus: GET/HTTP/1.0 User-Agent: NTRIP GnssSurferV1.10 Authorization: Basic
Was mache ich falsch und wie kann ich es beheben? Jede Hilfe wäre willkommen.
was meinst du? schließe es wann? –
Was meinen Sie mit dem Schließen des 'HttpExchange'? Wann sollte es geschlossen werden? –
sehe meine aktualisierte Antwort. Sollte jetzt klar sein :) – rmuller