我有一個基本的卷曲,如下所示:curl -X POST \ 'https://aogt.pl/auth/' \ -H 'Authorization: Basic NGZjMjExNWQyYTZk' \ -H 'Content-Type: application/x-www-form-urlencoded' \ -d 'client_id=4fc2115'當我在 Ubuntu 等控制臺中運行它時,一切正常,我得到了良好的響應?,F在我想使用 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
提交
取消