为了账号安全,请及时绑定邮箱和手机立即绑定

如何将curl映射到java okhttp?

如何将curl映射到java okhttp?

千巷猫影 2023-08-16 10:16:32
我有一个基本的卷曲,如下所示: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,但是我需要在这里更改什么,您能告诉我出了什么问题吗?非常感谢。
查看完整描述

2 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

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

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


查看完整回答
反对 回复 2023-08-16
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

RequestBody body = new FormBody.Builder() .add("client_id", "id_value"); 您好,希望您已经解决了这个问题。实际上,如果您想使用“form-body”而不是“json”发送请求,您可以轻松使用此类:“FormBody”。它继承了RequestBody。



查看完整回答
反对 回复 2023-08-16
  • 2 回答
  • 0 关注
  • 118 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信