我使用postman
来测试我的请求。所以,我选择从邮递员,显示的代码片断的选项,选择OkHttp
和片段是:如何在有很多参数时将内容传递给RequestBody?
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
内容是非常大的。我试图用String连接创建它,它的工作原理是什么,但是如果我得到一个带空格的字符串,并且知道存在哪些其他边界案例可能会混淆内容。
那么有没有比字符串连接更好的方法?
如果我使用FormBody并将它传递给Request.Builder(),我所做的请求是不正确的。我认为缺少的是mediaType,这是因为在传递正文到'Request.Builder()' – mt0s
之前,我在'RequestBody.create()'中使用了上面的代码。如果你看[源代码](https:// github.com/square/okhttp/blob/master/okhttp/src/main/java/okhttp3/FormBody.java#L29),你可以看到它使用了适当的媒体类型。关于你的代码片段的新内容是FormBody实际上是对字符串进行编码,照顾你担心的空间和其他角色。 – natario