Как вернуть поля "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 меняется)

Ответы (1 шт):
Не скaм проект? Ну смотри мне.
Нужно увеличить время readTimeout
OkHttpClient client = new OkHttpClient.Builder()
.readTimeout(30, TimeUnit.SECONDS)
.build();
