Как сделать несколько вызовов API в последовательном порядке - PullRequest
0 голосов
/ 05 октября 2019

Мне нужно вызвать два API A1 и A2, но не параллельно. A2 вызывается, только если A1 возвращает какое-либо значение флага в своем ответе JSON.

Я знаю, как сделать вызов http в java с использованием Httpclient. Один из способов - написать один код, чтобы выполнить первый вызов, проанализировать его ответ и снова использовать тот же код, чтобы сделать другой вызов. Это любой другой разумный способ, который автоматизирует этот процесс для нас, когда я передам и запрос, и условие, при которомво-вторых, нужно позвонить так, как это возможно в Rxjava

Follwing - это фрагмент кода Rxjava (Ссылка: ( RxJava Объединить последовательность запросов ))

api1.items(queryParam)
.flatMap(itemList -> Observable.fromIterable(itemList)))
.flatMap(item -> api2.extendedInfo(item.id()))
.subscribe(...)

Какя могу сделать это в Java? Есть ли какая-либо функция Java, которая уже существует и позволит мне сделать несколько последовательных вызовов?

Я пытался найти существующие решения, но они не были в Java.

1 Ответ

0 голосов
/ 05 октября 2019

Вы можете использовать HttpURLConnection для вызова API.

Проверьте ответ и, соответственно, запустите другой вызов.

Как-то так

public static void main(String[] args) throws IOException {

    String response1 = sendGET("http://url1");
    if(response1 != null && response1.contains("true")){
        String response2 = sendGET("http://url2");
    }

}

private static String sendGET(String url) throws IOException {
    URL obj = new URL(url);
    StringBuffer response = new StringBuffer();
    HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    con.setRequestMethod("GET");
    int responseCode = con.getResponseCode();
    System.out.println("GET Response Code :: " + responseCode);
    if (responseCode == HttpURLConnection.HTTP_OK) { // success
        BufferedReader in = new BufferedReader(new InputStreamReader(
                con.getInputStream()));
        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();

        // print result
        System.out.println(response.toString());
    } else {
        System.out.println("GET request not worked");
    }
    return response.toString();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...