如何将 curl 映射到 java okhttp?
How to map curl into 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 map 错误成java 代码变成了http。可能问题出在POST body,因为它不是JSON,但我需要在这里改变什么,你能告诉我哪里出了问题吗?非常感谢。
您要发送的请求有 content-type 作为 "application/x-www-form-urlencoded"。
因此,将 body 创建为 JSON 是行不通的。
您应该尝试按以下方式组成 body:
RequestBody body = new FormBody.Builder().add("client_id", "id_value").build();
我有如下基本卷曲:
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 map 错误成java 代码变成了http。可能问题出在POST body,因为它不是JSON,但我需要在这里改变什么,你能告诉我哪里出了问题吗?非常感谢。
您要发送的请求有 content-type 作为 "application/x-www-form-urlencoded"。 因此,将 body 创建为 JSON 是行不通的。 您应该尝试按以下方式组成 body:
RequestBody body = new FormBody.Builder().add("client_id", "id_value").build();