我有一个基本的卷曲,如下所示: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();
婷婷同学_
TA贡献1844条经验 获得超8个赞
RequestBody body = new FormBody.Builder() .add("client_id", "id_value");
您好,希望您已经解决了这个问题。实际上,如果您想使用“form-body”而不是“json”发送请求,您可以轻松使用此类:“FormBody”。它继承了RequestBody。
添加回答
举报
0/150
提交
取消