HTML-Quelltext - Rückgabewert?

StefMa

StefMa

Dauergast
450
Hi,

in meiner App gibt es eine Klasse, die den Quelltext einer Webseite runterläd und "wichtige" Daten herausfiltert.

Das ganze hat auch alles gut funktioniert, bis jetzt.
Denn seit neustem bekomme ich nur noch einen "standard"-Quelltext der ungefair so aussieht:
Code:
<html>
   <head>
   </head>
   <body> 
   </body>
</html>
Die Webseite selbst entählt natürlich einen Quelltext! ;)
[Wenn ich auf die Webseite gehe mit FF oder Chromium und den Quelltext betrachte, sehe ich den kompletten!]

Ganz unterschiedlich, habe noch nicht herausgefunden wann/wie/warum, bekomme ich aber auch den "richtigen" also kompletten Quelltext runtergeladen. Dann funktioniert die App auch...

Weiß einer woran das liegen kann?
Kann man mit php/javascript den Quelltext donwload unterbinden?

Ich mache das ganze rein in Java und benutze dafür URL...

MfG Ice
 
Eventuell wird die eigentliche Seite redirected. HTTP Response Code 301 oder 307.

Nun weiß ich aber nicht genau ob URL dem redirect folgt oder nicht.

Wenn das nicht geht, dann musst du den String mit nem HTTPClient ziehen, welcher das redirecting automatisch macht (Link, noch ein Link)
 
Zuletzt bearbeitet:
HI,

wie kann ich denn sehen, ob die Seite redirected?
Also erkennt man das iwo im Quelltext?
Oder mit WhireShark iwie?

Gruß
 
Ich würde in der Beschreibung der Klasse anfangen. wenn da nix zu finden ist ist Wireshark durchaus eine gute Lösung.
 
telnet webseite.de 80

GET / HTTP/1.0

Ist auch noch eine Möglichkeit.
 
Hi,

was genau meinst du damit?
Kann ich über Telnet auch den Quelltext bekommen oder was?
Kann ich das auch in Java(Android-JAVA) "implementieren"?

Gruß
 
Du kannst dir damit den response code des Webservers anschauen ohne Whireshark.
 
HI,

also wenn ich die Java-Datei aus dem Projekt ausglieder und rein als *.java Compiliere und starte, dann funktioniert alles!

Im Projekt jedoch bekomme ich manchmal das:
Code:
06-11 16:25:17.585: I/System.out(705): <html>
06-11 16:25:17.685: I/System.out(705): <head>
06-11 16:25:17.715: I/System.out(705): <meta http-equiv="refresh" content="0; URL=/web/">
06-11 16:25:17.725: I/System.out(705): </head>
06-11 16:25:17.725: I/System.out(705): <body>
06-11 16:25:17.775: I/System.out(705): </body>
06-11 16:25:17.785: I/System.out(705): </html>

Wie kann das denn sein?
Kann es sein, dass die Webseite iwie speziell solche Anfragen ablockt?
Aber wieso gehen dann manche durch?

MfG Ice

Der ursprüngliche Beitrag von 16:29 Uhr wurde um 16:45 Uhr ergänzt:

Aha - Langsam komme ich der Sache auf den Grund.
Folgendes habe ich zufällig "gefunden" :D

Code:
06-11 16:41:16.075: A/BatteryStatsImpl(77): problem reading network stats
06-11 16:41:16.075: A/BatteryStatsImpl(77): java.lang.IllegalStateException: problem parsing idx 1
06-11 16:41:16.075: A/BatteryStatsImpl(77): 	at com.android.internal.net.NetworkStatsFactory.readNetworkStatsDetail(NetworkStatsFactory.java:300)
06-11 16:41:16.075: A/BatteryStatsImpl(77): 	at com.android.internal.net.NetworkStatsFactory.readNetworkStatsDetail(NetworkStatsFactory.java:250)
06-11 16:41:16.075: A/BatteryStatsImpl(77): 	at com.android.internal.os.BatteryStatsImpl.getNetworkStatsDetailGroupedByUid(BatteryStatsImpl.java:5734)
06-11 16:41:16.075: A/BatteryStatsImpl(77): 	at com.android.internal.os.BatteryStatsImpl.access$100(BatteryStatsImpl.java:76)
06-11 16:41:16.075: A/BatteryStatsImpl(77): 	at com.android.internal.os.BatteryStatsImpl$Uid.computeCurrentTcpBytesReceived(BatteryStatsImpl.java:2457)
06-11 16:41:16.075: A/BatteryStatsImpl(77): 	at com.android.internal.os.BatteryStatsImpl$Uid.getTcpBytesReceived(BatteryStatsImpl.java:2446)
06-11 16:41:16.075: A/BatteryStatsImpl(77): 	at com.android.internal.os.BatteryStatsImpl.writeSummaryToParcel(BatteryStatsImpl.java:5437)
06-11 16:41:16.075: A/BatteryStatsImpl(77): 	at com.android.internal.os.BatteryStatsImpl.writeLocked(BatteryStatsImpl.java:4836)
06-11 16:41:16.075: A/BatteryStatsImpl(77): 	at com.android.internal.os.BatteryStatsImpl.writeAsyncLocked(BatteryStatsImpl.java:4818)
06-11 16:41:16.075: A/BatteryStatsImpl(77): 	at com.android.server.am.ActivityManagerService.updateCpuStatsNow(ActivityManagerService.java:1652)
06-11 16:41:16.075: A/BatteryStatsImpl(77): 	at com.android.server.am.ActivityManagerService$3.run(ActivityManagerService.java:1534)
06-11 16:41:16.075: A/BatteryStatsImpl(77): Caused by: java.io.FileNotFoundException: /proc/net/xt_qtaguid/stats: open failed: ENOENT (No such file or directory)
06-11 16:41:16.075: A/BatteryStatsImpl(77): 	at libcore.io.IoBridge.open(IoBridge.java:406)
06-11 16:41:16.075: A/BatteryStatsImpl(77): 	at java.io.FileInputStream.<init>(FileInputStream.java:78)
06-11 16:41:16.075: A/BatteryStatsImpl(77): 	at com.android.internal.net.NetworkStatsFactory.readNetworkStatsDetail(NetworkStatsFactory.java:269)
06-11 16:41:16.075: A/BatteryStatsImpl(77): 	... 10 more
06-11 16:41:16.075: A/BatteryStatsImpl(77): Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory)
06-11 16:41:16.075: A/BatteryStatsImpl(77): 	at libcore.io.Posix.open(Native Method)
06-11 16:41:16.075: A/BatteryStatsImpl(77): 	at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
06-11 16:41:16.075: A/BatteryStatsImpl(77): 	at libcore.io.IoBridge.open(IoBridge.java:390)
06-11 16:41:16.075: A/BatteryStatsImpl(77): 	... 12 more
06-11 16:42:18.275: E/SurfaceTexture(36): [PACKAGENAME] drainQueueLocked: SurfaceTexture has been abandoned!

Man sehen was google so aussuckt..
 
Code:
<meta http-equiv="refresh" content="0; URL=/web/">
DAS ist ein Redirect per HTML-Metadaten und leidet auf den dort angegeben Ordner weiter.
 
Hmm..
Blöd:

Code:
[B]protected boolean instanceFollowRedirects [/B]

Since: [URL="http://developer.android.com/guide/appendix/api-levels.html#level1"]API Level 1[/URL] 
Flag to define whether the protocol will automatically follow redirects or not. The default value is true.

Kann es natpürlich mal manuell hinzufügen und auf TRUE setzten...Aber sonst scheint der fehler wo anders zu sein.
 
Die Frage ist, ob es auch solchen HTML redirects folgt. Dürfte wohl nur auf http redirects (response code 301 und 302) zu.

Gesendet von meinem GT-I9000 mit Tapatalk 2
 
  • Danke
Reaktionen: StefMa
Hä?
Im letzten Post, habe ich doch eine Funktion gepostet, vom htturlconnection Objekt, die redirected folgt.
Das auch noch standardmäßig!

Oder habe ich da was falsch verstanden?

Gesendet von meinem Galaxy Nexus mit der Android-Hilfe.de App
 
HTML:
<meta http-equiv="refresh" content="0; URL=/web/">
Das ist ein Redirect im HTML Dokument. Sowas muss der Browser selbst auswerten, das geschieht nicht im HTTP Protokoll. Ergo musst du selber auf dieses Meta-Element im HTML reagieren, außerhalb von deiner HttpUrlConnection-Klasse. Diese folgt nur direkten Redirects im HTTP Protokoll, wenn statt Statuscode 200 (OK) ein 301 (Moved Permanently) oder 307 (Temporary Redirect) zurückkommt und eine neue URI im Location-Header steht.
 
  • Danke
Reaktionen: StefMa
Hi,

danke für die Erklärung.

Das heißt, ich muss jetzt selbst entscheiden, wass ich damit anfange.
Etwa wie:
Code:
Wenn rückgabe == <meta http-equiv="refresh" content="0; URL=/web/"> dann
-> dann mache dies das
Also ich muss wirklich selbst entscheiden, wass ich mit diesen Informationen mache.

Heißt auch im umkehrschluss, wahrscheinlich liegen meine Informationen - die ich haben will - unter */web/* iwo?!

Aber jetzt nochmal:
Kannst du dir erklären, warum manchmal dieser Rückgabewert kommt und manchmal das "richtige"?! Auf der selben Seite, wohl gemerkt..!

MfG Ice
 
Ja, deine gewünschte Informationen liegen unter http://www.domain.tld/web/, kannst auch direkt die URL darauf einstellen.

Nein, kann ich mir nicht erklären, dürfte die Seite selbst verschiedenes zurückgeben.
 

Ähnliche Themen

S
Antworten
9
Aufrufe
1.473
jogimuc
J
E
Antworten
5
Aufrufe
1.017
enrem
E
A
Antworten
10
Aufrufe
1.491
andymcnab
A
Zurück
Oben Unten