Volley - zwraca czasem HTML a czasem JSON

Odpowiedz Nowy wątek
2020-02-27 20:50

Rejestracja: 1 rok temu

Ostatnio: 2 dni temu

0

Cześć,

Ostatnio zacząłem pisać aplikacje na androida i napotkałem nietypową sytuację. Do wysyłania requesta na podany adres używam volley. W zależności od strony, jako response otrzymuję zwykły html a nieraz string do parsowania na JSON (przykładowy fragment z olx.pl - normalizedName":"ekspresy-do-kawy","position":0,"viewType":"grid","iconName":"","level":3,"displayOrder":0,"children":[],)
Dlaczego tak się dzieje?

public class HTTPSCommunication {

    public String httpsResponse;

    public void SendRequest(Context context, String URL)
    {
        final RequestQueue queue = Volley.newRequestQueue(context);

        StringRequest stringRequest = new StringRequest (Request.Method.GET, URL,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    httpsResponse = response;
                }
            }, 
           new Response.ErrorListener() {
               @Override
               public void onErrorResponse(VolleyError error) {
                   httpsResponse =  error.getMessage();
                }
            }
        );

        queue.add(stringRequest);
    }
}
edytowany 2x, ostatnio: Ktos, 2020-02-27 21:37

Pozostało 580 znaków

2020-02-27 20:56

Rejestracja: 8 miesięcy temu

Ostatnio: 46 minut temu

0

W zależności od strony, jako response otrzymuję zwykły html a nieraz string do parsowania na JSON

To miło, że podzieliłeś się tym z nami.

Zapomniałem zadać pytania :) - Ales 2020-02-27 21:00

Pozostało 580 znaków

2020-02-27 21:00

Rejestracja: 2 lata temu

Ostatnio: 4 minuty temu

0

A teraz w czym problem? Bo nie zadałeś żadnego pytania. No i nie ma nic dziwnego w tym, że różne requesty zwracją różne dane przecież.

A na sam koniec - zapomnij o Volley. To nieudana, przestarzała i nierozwijana biblioteka. Zacznij korzystać np. z Retrofita.

edytowany 2x, ostatnio: Michał Sikora, 2020-02-27 21:02

Pozostało 580 znaków

2020-02-27 21:05

Rejestracja: 1 rok temu

Ostatnio: 2 dni temu

0

Różne dane ok ale dlaczego w różnym formacie? Dzięki za propozycję

Pozostało 580 znaków

2020-02-27 21:06

Rejestracja: 2 lata temu

Ostatnio: 4 minuty temu

0

No bo takie zapytania wykonujesz. Musisz pokazać jak wyglądają, żeby coś wywnioskować. W sensie adresy URL, ewenutalnie nagłówki i inne dodatkowe dane.

edytowany 1x, ostatnio: Michał Sikora, 2020-02-27 21:07

Pozostało 580 znaków

2020-02-27 21:20

Rejestracja: 1 rok temu

Ostatnio: 2 dni temu

0

Mniejsza z tym, jeśli Volley nie jest rozwijamy nie będę z tym się mocować. Jakie inne alternatywne biblioteki możesz polecić oprócz Rertofit?

Pozostało 580 znaków

2020-02-27 21:31

Rejestracja: 2 lata temu

Ostatnio: 4 minuty temu

1

Znaczy się, Twój problem prawie na 100% nie wynika z samego faktu użycia Volley. O tym wspomniałem tylko informacyjnie. Do tego co chcesz osiągnąć nie poleciłbym niczego innego niż Retrofit. Będzie się sprawdzał najlepiej. Możesz też użyć gołego OkHttp (Retrofit korzysta z niego domyślnie pod spodem). Są jeszcze inne biblioteki, ale raczej nie pod Twoje zastosowanie - Cronet, Scarlet, Wire.

edytowany 2x, ostatnio: Michał Sikora, 2020-02-27 21:33

Pozostało 580 znaków

2020-02-27 21:32

Rejestracja: 8 miesięcy temu

Ostatnio: 46 minut temu

1

Może kolega się jeszcze wypowie, ale ja niczego lepszego od Retrofita +OkHttp + Rxjava nie znam.

Pozostało 580 znaków

2020-02-27 21:49

Rejestracja: 1 rok temu

Ostatnio: 2 dni temu

0

Już znalazłem o co chodzi. Źródło strony w wersji na komputer i wersji na urządzenia mobilne wygląda zupełnie inaczej.
Na niektórych stronach było bardzo dużo zawartości w formacie {"abc";"def"} a w niektórych tylko fragment i to mnie zmyliło.

edytowany 2x, ostatnio: Ales, 2020-02-27 22:06

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0