2010-11-22 22 views
0

J'écris une application, qui analyse les données des conseils sur les sites de l'aéroport - Sheremetyevo (http://svo.aero/timetable/today/) et Domodedovo (http: //www.domodedovo .ru/ru/principal/airindicator/flightnew /). Je crée un objet URL avec le lien du site. Ensuite, j'appelle la méthode openStream. Après que ce flux est utilisé avec l'analyseur HTMLEditorKit. Avec Domodedovo, cela fonctionne plutôt bien, mais avec le programme de l'aéroport de Sheremetyevo se comporte bizarrement. Tout d'abord, un certain nombre de lancements de l'application échoue - un flux contient des symboles dans un encodage inconnu, et la longueur du texte est nettement plus petite que le contenu de la page réelle. Puis l'inattendu se produit - quelques passages réussis, renvoyant les données désirées - puis encore une série de revers. Qu'est-ce que ça dépend? Je ne peux pas le retrouver.Problème de lecture des données d'un site Web

J'ai essayé d'envoyer des en-têtes HTTP spécifiques à travers URLConnection, en espérant que le tout en eux, comme dans le navigateur tout ouvre bien. Mais cela n'a pas aidé. La situation n'a pas changé.

En quoi peut-être le problème?

P.S. Mon anglais n'est pas très bon, désolé.

+0

Il se peut que le codage de caractères ne soit pas correctement défini. cela pourrait expliquer la longueur des incohérences de message. – pstanton

Répondre

0

Problème résolu.

Tout cela était dû au fait que le serveur compressait les données lors de leur envoi à l'application.

L'en-tête http qui venait du serveur:

Request Version: HTTP/1.1 
Response Code: 200 
Date: Mon, 22 Nov 2010 23:43:53 GMT 
Server: Apache/1.3.37 (Unix) mod_deflate/1.0.21 mod_accel/1.0.34 mod_ssl/2.8.28 OpenSSL/0.9.8e rus/PL30.22 
Expires: Mon, 22 Nov 2010 23:44:44 GMT 
Content-Encoding: gzip <-- !!! 
Connection: close 
Transfer-Encoding: chunked 

Ainsi, il peut être possible de lire des données si vous utilisez GZIPInputStream.

Peut-être que quelqu'un trouve toutes ces informations utiles pour lui-même.