2017-09-21 5 views
1

Je suis l'URL suivant de mon appareil Android.Android YouTube V3 API ne fonctionne pas

URL: https://www.googleapis.com/youtube/v3/search?key=MY_KEY&channelId=UCoWgc1mqe-bcfb_lem7EyOg&part=snippet,id&order=date&maxResults=50

Réponse:] r8} ϯ @ e} 䋕 ɗ j? % OO (@q3���*b�a"�g�o�K��%Y]�em�,uGd8m�ātu��]������/�c���W�_���� B M ; v q: fA [8KR lZ? [T] ඘ JL ` G1 h 䬑 T [} E y ] qt _xl . e/v o H

Pour obtenir la liste des vidéos YouTube. Cela fonctionnait bien avant mais parfois sa réponse n'est pas valide tout en tapant des navigateurs cela fonctionne bien

S'il vous plaît aidez-moi !!

+0

avec un Inspectez outil comme '' Fiddler' ou Wireshark' afin d'inspecter l'en-tête http de codage de contenu. La première chose qui me vient à l'esprit est que la réponse que vous obtenez pourrait être compressée en 'gzip',' bzip' ou 'deflate'. Dans ce cas, vous devez le décompresser comme vous devez le faire avec un fichier 'zip'. Si la réponse est compressée, vous devez d'abord la décompresser dans votre application. – cramopy

+0

Pourquoi cela fonctionnait avant? et aussi comment ça marche sur les navigateurs? Mes applications sont sur Playstore et ils fonctionnaient bien. Soudain, les applications cessent de fonctionner et dans les journaux au-dessus de la chose stupide montre 200 code de réponse. –

+0

s'il vous plaît lire à nouveau mon commentaire ... S'il vous plaît fournir la valeur de l'en-tête 'Content-Encoding' de la réponse afin de vous aider. – cramopy

Répondre

0

S'il vous plaît voir ma question connexe here (mais dans C#) et les réponses à ce sujet afin de comprendre ce que je veux dire. Ensuite, vous devez rechercher l'exemple pour decompress gzip android et regarder les ressources existantes pour accomplir ceci.

Veuillez garder à l'esprit que l'API n'envoie pas toujours la réponse au format gzip ou non. Alors s'il vous plaît faites une vérification si la réponse est vraiment dans gzip.

Pour la décompression simple, vous pouvez utiliser la méthode suivante:

public static String decompress(byte[] compressed) throws IOException { 
    final int BUFFER_SIZE = 32; 
    ByteArrayInputStream bis = new ByteArrayInputStream(compressed); 
    GZIPInputStream gis = new GZIPInputStream(bis, BUFFER_SIZE); 
    StringBuilder s = new StringBuilder(); 
    byte[] data = new byte[BUFFER_SIZE]; 
    int bytesRead; 
    while ((bytesRead = gis.read(data)) != -1) { 
     s.append(new String(data, 0, bytesRead)); 
    } 
    gis.close(); 
    bis.close(); 
    return s.toString(); 
} 

(ce code a été prise de Vyshnavi's answer)

0

J'ai trouvé la solution que j'utilisais la bibliothèque boucle j (pour la demande de http) ancienne version

change juste

compilation 'com.loopj.android:android-async-http:1.4.8'

à

compilation 'com.loopj.android:android-async-http:1.4.9'

il a résolu mon problème