我正在尝试创建一个使用数据库来响应通过URI引入的某些查询的Web服务器。
我遇到的问题与HTTP处理程序有关。 Chrome会返回ERR_CONTENT_LENGTH_MISMATCH。
我按照Java文档中的示例进行操作,理论上它应该可行。 IE和Edge不显示任何错误或文本。
请问你看看是否出错了?
以下是代码:
private class QueryHandler implements HttpHandler {
private Map<String, String> parameters;
private String result;
private OutputStream os;
@Override
public void handle(HttpExchange exchange) throws IOException {
parameters = this.extractParameters(exchange.getRequestURI().getRawQuery());
result = dbController.jsonQueryResponse(parameters.get("year"), parameters.get("day"), parameters.get("category")).toString();
exchange.getResponseHeaders().set("Content-Type", "application/json; charset=UTF-32");
exchange.sendResponseHeaders(200, result.getBytes("UTF-32").length);
os.write(result.getBytes("UTF-32"));
exchange.close();
}
private Map<String, String> extractParameters(String query){
Map<String, String> toBeReturned = new HashMap<>();
for(String parameterValue : query.replaceFirst("\\?", "").split("&")){
String[] parameter = parameterValue.split("=");
toBeReturned.put(parameter[0], parameter[1]);
}
return toBeReturned;
}
}
有趣的事实:
谢谢!
答案 0 :(得分:0)
发现问题,我需要将内容类型设置为application / json。