我已经为 http 服务器编写了一个代码,它假设根据客户端输入向客户端发送响应。
我已经写了两次相同的代码,一次使用简单的套接字连接,第二次使用com.sun.net.httpserver
.
基于简单套接字的代码工作正常,我可以使用以下命令读取来自客户端的请求:
DataInputStream in = new DataInputStream (threadSocket.getInputStream());
int ln = in.available();
byte [] bytes = new byte [ln];
in.read(bytes);
String msg = new String(bytes);
但是,当我尝试使用 httpserver 时,我无法从客户端获得任何输入。
这是 http 服务器处理程序的代码:
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 .......
}
}
目前,我正在尝试使用来自的输入流,HttpExchange.getRequestBody()
但它始终为空。我也尝试过,httpExchange.getRequestURI().getQuery()
但它也总是为空。
来自客户端的输入如下所示:
GET / HTTP/1.0
User-Agent: NTRIP GnssSurferV1.10
Authorization: Basic
我做错了什么,我该如何解决?任何帮助,将不胜感激。