直接从参数的HashMap创建一个RequestBody?

时间:2015-08-01 17:43:58

标签: java android okhttp

我现在已经谷歌搜索了一段时间,无法找到我的问题的解决方案是干净的,或者不是一种阴暗/黑客的做事方式。

我还查看了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&param2=" + param2 // for example ! request = new Request.Builder() .url(url + path) .post(RequestBody.create(MEDIA_TYPE_MARKDOWN, parameters)) .build(); 直接创建RequestBody,还是必须使用其他框架?

这是我用过的代码:

HashMap

0 个答案:

没有答案