[原创] JAVA sun HttpServer在handler中返回含中文的response应该怎么处理

在JAVA中,使用sun HttpServer实现一个web server的时候,使用了下面的hander类来处理请求:
static class MyHandler implements HttpHandler {
  @Override
  public void handle(HttpExchange httpExchange) throws IOException {
    String response = "test";  // 返回固定内容
    httpExchange.sendResponseHeaders(200, response.length());
    OutputStream os = httpExchange.getResponseBody();
    os.write(response.getBytes());
    os.close();
  }
}

如果要在response里返回带中文的内容,例如:
String response = "中文";
那么你就会发现访问这个web server返回的是null,这说明handler实现有问题。那么代码应该怎么改?
文章来源:https://www.codelast.com/
如下:

static class MyHandler implements HttpHandler {
  @Override
  public void handle(HttpExchange httpExchange) throws IOException {
    String response = "中文";
    byte[] bytes = response.getBytes(StandardCharsets.UTF_8); // 转换为字节数组,指定编码为UTF-8
    httpExchange.sendResponseHeaders(200, bytes.length);
    OutputStream os = httpExchange.getResponseBody();
    os.write(bytes);
    os.close();
  }
}
此时你会发现,向server发请求返回的不再是null而是正确的内容了。

文章来源:https://www.codelast.com/
➤➤ 版权声明 ➤➤ 
转载需注明出处:codelast.com 
感谢关注我的微信公众号(微信扫一扫):
wechat qrcode of codelast
以及我的微信视频号:

发表评论