Tib*_*bor 18 java get httpserver query-string
我试图在Java中创建一个简单的HttpServer来处理GET请求,但是当我尝试获取请求的GET参数时,我注意到HttpExchange类没有方法.
有没有人知道一种简单的方法来读取GET参数(查询字符串)?
这是我的处理程序的样子:
public class TestHandler{
@Override
public void handle(HttpExchange exc) throws IOxception {
String response = "This is the reponse";
exc.sendResponseHeaders(200, response.length());
// need GET params here
OutputStream os = exc.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
Run Code Online (Sandbox Code Playgroud)
..和主要方法:
public static void main(String[] args) throws Exception{
// create server on port 8000
InetSocketAddress address = new InetSocketAddress(8000);
HttpServer server = new HttpServer.create(address, 0);
// bind handler
server.createContext("/highscore", new TestHandler());
server.setExecutor(null);
server.start();
}
Run Code Online (Sandbox Code Playgroud)
小智 37
下列: httpExchange.getRequestURI().getQuery()
将以与此类似的格式返回字符串: "field1=value1&field2=value2&field3=value3..."
所以你可以简单地自己解析字符串,这就是解析函数的样子:
public Map<String, String> queryToMap(String query) {
Map<String, String> result = new HashMap<>();
for (String param : query.split("&")) {
String[] entry = param.split("=");
if (entry.length > 1) {
result.put(entry[0], entry[1]);
}else{
result.put(entry[0], "");
}
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
这就是你如何使用它:
Map<String, String> params = queryToMap(httpExchange.getRequestURI().getQuery());
System.out.println("param A=" + params.get("A"));
Run Code Online (Sandbox Code Playgroud)