我正在使用 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/