You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OkHttpClient请求Brreg开放API返回乱码的正确实现方式咨询

问题根因

该乱码问题由3个常见原因导致:

  1. 未显式指定Accept请求头,接口默认返回了base64编码的非明文格式内容
  2. 未指定Accept-Encoding请求头,接口返回的gzip压缩数据流没有被正确解码
  3. 未显式指定UTF-8字符集解析响应,挪威语特殊字符无法正常展示
正确实现代码

建议使用4.x及以上稳定版OkHttp,完整实现如下:

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

public class BrregPublicDataFetcher {
    public static void main(String[] args) throws IOException {
        OkHttpClient client = new OkHttpClient();

        Request request = new Request.Builder()
                .url("https://data.brreg.no/rofs/od/rofs/stottetildeling/search?language=nob&mottakerOrgnr=987&fraDato=2016-11-20")
                // 明确要求返回JSON明文
                .header("Accept", "application/json")
                // 声明支持的压缩编码格式,自动适配接口返回
                .header("Accept-Encoding", "gzip, deflate, br")
                // 指定响应字符集
                .header("Accept-Charset", "UTF-8")
                // 增加UA标识,避免被接口反爬策略拦截
                .header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36")
                .get()
                .build();

        // 使用try-with-resources自动释放响应资源
        try (Response response = client.newCall(request).execute()) {
            if (!response.isSuccessful()) {
                throw new IOException("请求异常,响应码: " + response.code());
            }
            // 显式用UTF-8解码响应字节,避免默认字符集不兼容
            String responseContent = new String(response.body().bytes(), StandardCharsets.UTF_8);
            System.out.println(responseContent);
        }
    }
}
注意事项
  • 该公共接口有请求频率限制,短时间内发起大量请求会被临时封禁IP
  • 响应为标准JSON结构,可直接使用Jackson、Gson等序列化工具直接解析为Java对象,无需手动处理字符串
  • 若调整请求参数后仍出现乱码,可检查响应头Content-Encoding字段,若为gzip可手动通过GZIPInputStream包装响应字节流后再读取

内容的提问来源于stack exchange,提问作者Peter Penzov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 16:09:05