我现在已经谷歌搜索了一段时间,无法找到我的问题的解决方案是干净的,或者不是一种阴暗/黑客的做事方式。
我还查看了okhttp的wiki,其中清楚地显示了如何使用参数发出POST请求,尽管它是使用类FormEncodingBuilder
构造的,它不允许使用{ {1}}在它的创作中,因为它被创建为一个参数链,就像这样(取自okhhtp' s wiki):
HashMap
在这里,我们可以看到如何将参数添加到 private final OkHttpClient client = new OkHttpClient();
public void run() throws Exception {
RequestBody formBody = new FormEncodingBuilder()
.add("search", "Jurassic Park")
.build();
Request request = new Request.Builder()
.url("https://en.wikipedia.org/w/index.php")
.post(formBody)
.build();
Response response = client.newCall(request).execute();
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
System.out.println(response.body().string());
}
。但它没有回答我如何直接添加RequestBody
完整的参数 ,而不是逐一添加。{/ p>
我到目前为止所提供的解决方案只是循环遍历HashMap
中的每个EntrySet
,并将其添加到HashMap
,如此(取自here):
RequestBody
虽然这确实解决了我的问题,但我想知道是否有办法通过okhttp中的 public static final MediaType MEDIA_TYPE_MARKDOWN = MediaType.parse("text/x-markdown; charset=utf-8");
...
parameters = "param1=text¶m2=" + param2 // for example !
request = new Request.Builder()
.url(url + path)
.post(RequestBody.create(MEDIA_TYPE_MARKDOWN, parameters))
.build();
直接创建RequestBody
,还是必须使用其他框架?
这是我用过的代码:
HashMap