【问题标题】:How to map curl into java okhttp?如何将 curl 映射到 java okhttp?
【发布时间】:2019-09-21 16:32:51
【问题描述】:

我有一个基本的卷曲,如下所示:

curl -X POST \
    'https://aogt.pl/auth/' \
    -H 'Authorization: Basic NGZjMjExNWQyYTZk' \
    -H 'Content-Type: application/x-www-form-urlencoded' \
    -d 'client_id=4fc2115'

当我在控制台中运行它时,例如Ubuntu一切正常,我得到了很好的回应。现在我想使用 okhttp 将此 curl 映射到 java 代码中。我写下面的代码:

public class TestMain {
    private static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
    public static void main(String[] args) throws IOException {
        String data = "client_id=4fc2115";
        RequestBody body = RequestBody.create(JSON, data);
        Request request = new Request.Builder()
                .url("https://aogt.pl/auth/")
                .addHeader("Authorization", "Basic NGZjMjExNWQyYTZk")
                .addHeader("Content-Type", "application/x-www-form-urlencoded")
                .post(body)
                .build();
        OkHttpClient client = new OkHttpClient();
        Response response = client.newCall(request).execute();
        System.out.println(response.body().string());
    }
}

pom 文件如下所示:

<dependencies>
   <dependency>
      <groupId>com.squareup.okhttp3</groupId>
         <artifactId>okhttp</artifactId>
      <version>4.2.0</version>
   </dependency>
</dependencies>

问题是,当我运行此代码时,我得到“400 Bad Request”,所以这是服务器的问题。我把上面的curl映射错了,把java代码改成http了。可能问题出在 POST 正文中,因为它不是 JSON,但我需要在这里更改,你能告诉我有什么问题吗?非常感谢。

【问题讨论】:

    标签: java curl okhttp


    【解决方案1】:

    您要发送的请求的内容类型为“application/x-www-form-urlencoded”。 因此,将主体创建为 JSON 是行不通的。 您应该尝试通过以下方式形成主体:

    RequestBody body = new FormBody.Builder().add("client_id", "id_value").build();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-05
      • 1970-01-01
      • 2023-01-27
      • 2014-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多