Volley - zwraca czasem HTML a czasem JSON

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);
    }
}
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.

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.

0

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

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.

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?

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.

1

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

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.

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