请问OkHttp 3如何设置post请求的编码呢?

发布于 2022-09-02 12:25:26 字数 623 浏览 19 评论 0

图片描述

这是create方法的源码:

public static RequestBody create(MediaType contentType, String content) {
    Charset charset = Util.UTF_8;
    if (contentType != null) {
      charset = contentType.charset();
      if (charset == null) {
        charset = Util.UTF_8;
        contentType = MediaType.parse(contentType + "; charset=utf-8");
      }
    }
    byte[] bytes = content.getBytes(charset);
    return create(contentType, bytes);
  }

这个content是类似于“a=88&b=99”这样的字符串吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

行雁书 2022-09-09 12:25:26

推荐你使用 postman ,这个是 chrome 的一款http调试的插件,他可以直接生成okhttp 的代码。
这是我自己调试时用 postman生成的okhttp 的java代码。

clipboard.png

满天都是小星星 2022-09-09 12:25:26

我用下面的方式服务器获取的登录的账号和密码都是null,但是我直接砸url拼接的话会获取到值。我想请教下这是为什么。

public static String sendByPostMap(String url, Map<String, String> params) {
        String result;
        OkHttpClient client = new OkHttpClient();
        StringBuilder content = new StringBuilder();
        Set<Map.Entry<String, String>> entrys = params.entrySet();
        Iterator<Map.Entry<String, String>> iterator = params.entrySet().iterator();
        while (iterator.hasNext()) {
            Map.Entry<String, String> entry = iterator.next();
            content.append(entry.getKey()).append("=").append(entry.getValue());
            if (iterator.hasNext()) {
                content.append("&");
            }
        }

        RequestBody requestBody = RequestBody.create(MEDIA_TYPE_TEXT, content.toString());
        Request request = new Request.Builder().url(url).post(requestBody).build();
        Response response = null;
        try {
            response = client.newCall(request).execute();
            assert response.body() != null;
            result = response.body().string();
            System.out.println("result = " + result);
            return result;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }



    public static void main(String[] args) {
        //String url = "http://172.18.9.166:8080/user/login.kq";
        //String url = "http://172.18.9.166:8899/demo/postByMap?loginName=admin&loginPassword=Hans1107laser";
        String url = "http://172.18.9.166:8899/demo/postByMap";
        Map<String, String> params = new HashMap<>();
        params.put("loginName", "admin");
        params.put("loginPassword", "123456");
        String result = sendByPostMap(url, params);
        System.out.println("result = " + result);

    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文