Java HttpServer - ERR_CONTENT_LENGTH_MISMATCH

时间:2016-04-05 14:55:34

标签: java json http server

我正在尝试创建一个使用数据库来响应通过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;
    }
}

有趣的事实:

  • Edge让我下载了一个txt文件。
  • IE没有。

谢谢!

1 个答案:

答案 0 :(得分:0)

发现问题,我需要将内容类型设置为application / json。