java - RequestBody 参数很多时如何传递内容?

标签 java android okhttp

我正在使用 postman 来测试我的请求。所以我从 postman 那里选择了显示代码 fragment 的选项并选择了 OkHttp fragment 是:

OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");

RequestBody body = RequestBody.create(mediaType, "a=foo&b=bar&c=wow&d=awesome&e=random&f=rainbows /** lots of strings **/");
Request request = new Request.Builder()
 .url(URL)
 .post(body)
 .addHeader("content-type", "application/x-www-form-urlencoded")
 .addHeader("cache-control", "no-cache")
 .addHeader("postman-token", "40052d2a-0ff0-ead4-1cf7-1c12f9b8eca9")
 .build();

Response response = client.newCall(request).execute();

RequestBody 的内容真的很大。我尝试使用字符串连接创建它并且它有效但是如果我得到一个带空格的字符串并且谁知道存在哪些其他边缘情况可能会混淆内容怎么办。

那么有没有比字符串连接更好的方法呢?

最佳答案

我想你想使用 FormBody:

RequestBody body = new FormBody.Builder()
        .add("imageUrl", imageUri.toString())
        .add("caption", caption)
        .add("foo", "bar")
        .build();

它还会为您添加内容类型并关心编码。

另一个选项是 Uri 类,但由于您已经在使用 okhttp3,因此不需要它。

关于java - RequestBody 参数很多时如何传递内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39982737/

相关文章:

android - 样式化 sectionIndexer

android - onPause() 被意外调用

android - Google Map API,带有我自己创建的 map 图

java - 使用 MockMvc 测试 Spring

java - 检查 JDBC String/VARCHAR 比较中的转义 %?

java - 创建lucene索引的方法

java - 资源泄漏 : workbook is never closed warning when using Apache. POI XSSFWorkbook

java - 如何在android服务器端禁用tcp_timestamp?

java - 是否可以使用普通 Java 使用 okHttp 客户端执行 OAuth2 请求

android - 避免 '@' 字符在 POST @FormUrlEncoded 请求期间获取 url 编码