Как отобразить скручиваемость в java ohttp? - PullRequest
0 голосов
/ 21 сентября 2019

У меня есть базовый завиток, как показано ниже:

curl -X POST \
    'https://aogt.pl/auth/' \
    -H 'Authorization: Basic NGZjMjExNWQyYTZk' \
    -H 'Content-Type: application/x-www-form-urlencoded' \
    -d 'client_id=4fc2115'

Когда я запускаю его в консоли, например, на Ubuntu, все работает правильно, я получаю хороший ответ.Теперь я хотел бы отобразить этот curl в код Java с помощью okhttp.Я пишу ниже код:

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», так что это проблема ссервер.Я неправильно карту выше свернуться в код Java в http.Возможно, проблема в теле POST, потому что это не JSON, но что мне нужно изменить здесь, не могли бы вы сказать, что не так?Большое спасибо.

1 Ответ

2 голосов
/ 21 сентября 2019

Запрос, который вы хотите отправить, имеет тип содержимого "application / x-www-form-urlencoded".Поэтому создание тела в виде JSON не будет работать.Вы должны попытаться сформировать тело следующим образом:

RequestBody body = new FormBody.Builder (). Add ("client_id", "id_value"). Build ();

...