如何将curl映射到java okhttp?

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


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,但是我需要在这里更改什么,您能告诉我出了什么问题吗?非常感谢。


千巷猫影
浏览 184回答 2
2回答

斯蒂芬大帝

您要发送的请求的内容类型为“application/x-www-form-urlencoded”。因此将正文创建为 JSON 是行不通的。您应该尝试通过以下方式塑造身体:RequestBody body = new FormBody.Builder().add("client_id", "id_value").build();

婷婷同学_

RequestBody body = new FormBody.Builder() .add("client_id", "id_value");&nbsp;您好,希望您已经解决了这个问题。实际上,如果您想使用“form-body”而不是“json”发送请求,您可以轻松使用此类:“FormBody”。它继承了RequestBody。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java