Как вернуть поля "price" с p2p торговли на сайте bybit? (Java)

Ребята, я делаю веб приложение для личного пользования.

Мне нужно взять первые 3 позиций p2p торговли с сайта ByBit. А именно (USDT-KZT) [Купля], поле цены. Отобразить их странице вп. Уже мучуюсь недели три. У них есть java API, но там нету нечего для работы с разделом p2p торговли. Использую Inteleji Idea, postman web, java, maven, okhttp, spring boot.

Я Нашел юрл по которому можно делать запрос (https://api2.bybit.com/fiat/otc/item/online), в теле прописал:

{"userId":"","tokenId":"USDT","currencyId":"KZT","payment":[],"side":"1","size":"3","page":"1","amount":"","authMaker":false,"canTrade":false}

В postman'e проверил, приходит моментально, вся страница. Но очень много лишних полей. Далее я залил okhttp в свой проект, сделал метод:

`

public String kztBuy() {

    double result = 0;

    String allrequest = "";
    OkHttpClient client = new OkHttpClient();
    MediaType mediaType = MediaType.parse("application/json; charset=utf-8");

    String json = "{\"userId\":\"\",\"tokenId\":\"USDT\",\"currencyId\":\"KZT\",\"payment\":[],\"side\":\"1\",\"size\":\"3\",\"page\":\"1\",\"amount\":\"\",\"authMaker\":false,\"canTrade\":false}";

    RequestBody body = RequestBody.create(json, mediaType);

    Request request = new Request.Builder()
            .url("https://api2.bybit.com/fiat/otc/item/online")
            .post(body)
            .build();

    try {
        Response response = client.newCall(request).execute(); // java.net.SocketTimeoutException
        String responseString = response.body().string();
        allrequest = responseString;
        System.out.println("KztBuy result");
        System.out.println(responseString); // чуть больше 250 строк тут. Лишнего очень много. В целом проблемы в этом нету можно ее распрарсить.
        System.out.println();
    } catch (Exception e) {
        e.printStackTrace();
    }

    return allrequest;
}`

При вызове метода, происходит post запрос, в тело которого заносятся параметры. Через 8-12 секунд запроc приходит обратно, но с вероятностью 40% оказывается с ошибкой (SocketTimeoutException). Но если в браузере открыть bybit , зайти на аккаунт, и после этого делать запрос в коде, то он проходит со 100% вероятностью, но так же 8-12сек.

Кто знает, можно ли как то упростить всю эту задачу? Или решить проблему с большим ожиданием принятия запроса и 40% эксепшионом. (ниже скрины)

ByBit p2p 3 позиции (на скрине 10, в параметре size меняется) postman web

ByBit p2p 3 позиции (на скрине 10, в парам size)


Ответы (1 шт):

Автор решения: qqwerbee

Не скaм проект? Ну смотри мне.

Нужно увеличить время readTimeout

OkHttpClient client = new OkHttpClient.Builder()
    .readTimeout(30, TimeUnit.SECONDS)
    .build();
→ Ссылка