Pobieranie JSON'a z API optymalizacja

Pobieranie JSON'a z API optymalizacja
Defcer
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 4 lata
  • Postów:14
0

Czy mogę jakoś zoptymalizować to? Poczytałem trochę dokumentacji, ale nie znalazłem nic ciekawego. Może ktoś podpowie.

Kopiuj
URL url = new URL(myURL);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("GET");
        connection.connect();
        String inline = new String();
        String finalStr;
        ArrayList<Repo> repos = new ArrayList<>();
        int responseCode = connection.getResponseCode();

        if (responseCode == HttpURLConnection.HTTP_OK) {
            //reading json from api
            Scanner scanner = new Scanner(url.openStream());
            while(scanner.hasNext()) {
                inline+=scanner.nextLine();
            }
            scanner.close();
            JSONArray jsonarray = new JSONArray(inline);
            for (int i = 0; i < jsonarray.length(); i++) {
                JSONObject jsonobject = jsonarray.getJSONObject(i);
            }
}
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
1

Ale czemu robisz to takim uber niskopoziomowym kodem? o_O Potem tego JSONa też mapujesz ręcznie na jakieś obiekty? Czemu nie Retrofit czy RestTemplate?


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
Defcer
bo nie znam tego ;/ zaczynam dopiero. Nie już nic nie robię z tym. Zapisuje do wspomninej w kodzie arraylisty to co mnie interesuje z jsona.
Shalom
Popatrz moze na https://square.github.io/retrofit/ albo https://www.baeldung.com/rest-template bo pobranie JSONa z Rest API to w normalnym systemie jest jedna linijka kodu a nie takie cuda wianki. Nie rozumiem też co chcesz tu "optymalizować".
Defcer
No bo cały ten proces trwa około 5ciu sekund. A to dużo :o no i najwięcej zajmują wspomniane "cuda wianki". Dzięki za wskazówkę.
Shalom
Robisz niby jakieś dziwne czytanie po linii (czym w ogóle jest linia w kontekście payloadu http? ;) ) ale obawiam sie że główny problem to czas odpowiedzi serwera z którego pobierasz dane a nie te dalsze operacje które tam masz. Stuknij do tego URLa curlem i zobacz ile to trwa.
WeiXiao
sam się stuknij curlem :D współczesnych narzędzi to już nie ma?
Shalom
A co jest bardziej współczesne niby? o_O
Defcer
curl trwa 1,5 sek. Nie spoko to przypisywanie mapowanie zabierało multum czasu. Skorzystałem teraz z kodu gościa ze stackoverflow to odpowiedz praktycznie jest taka sama jak curl. Link: https://stackoverflow.com/questions/47095087/parse-github-api-response-in-java
Shalom
Ja bym mimo wszystko zrobił to czytelnie jakimś retrofitem ;)
WeiXiao
fiddler postman insomnia? :P
Defcer
Dzięki Shalom, na pewno poczytam o tym więcej. Na razie tego użyłem bo to rozumiem i działa c:

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.