我使用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