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

图片描述

这是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”这样的字符串吗?

回答:

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

clipboard.png

回答:

我用下面的方式服务器获取的登录的账号和密码都是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);

}

以上是 请问OkHttp 3如何设置post请求的编码呢? 的全部内容, 来源链接: utcz.com/a/165965.html

回到顶部