在OkHttp中使用请求正文获取请求

我正在尝试将OkHttp 3.6.0与Elasticsearch一起使用,并且我坚持向Elasticsearch Multi GET API发送请求。

它需要向请求主体发送HTTP GET请求。 不幸的是,如果我自己尝试构建请求,OkHttp不支持开箱即用并抛出exception。

RequestBody body = RequestBody.create("text/plain", "test"); // No RequestBody supported Request request = new Request.Builder() .url("http://example.com") .get() .build(); // Throws: java.lang.IllegalArgumentException: method GET must not have a request body. Request request = new Request.Builder() .url("http://example.com") .method("GET", requestBody) .build(); 

有没有机会在OkHttp中使用请求主体建立GET请求?

相关问题:

  • 带请求正文的HTTP GET
  • 如何在没有请求主体的情况下发出OKHTTP发布请求?
  • 带有请求正文的Elasticsearch GET请求

经过几次尝试后,我找到了解决这个问题的方法。 也许有人发现它很有用。

我使用了“Httpurl.Builder”。

 HttpUrl mySearchUrl = new HttpUrl.Builder() .scheme("https") .host("www.google.com") .addPathSegment("search") .addQueryParameter("q", "polar bears") .build(); 

您的获取请求url将以这种方式发生:

 https://www.google.com/search?q=polar%20bears 

在构建你的url后,你必须像这样构建你的请求:

 Request request = new Request.Builder() .url(mySearchUrl) .addHeader("Accept", "application/json") .method("GET", null) .build(); 

以下是来源: https : //square.github.io/okhttp/3.x/okhttp/okhttp3/HttpUrl.html