1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

HTML-Quelltext - Rückgabewert?

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von StefMa, 24.05.2012.

  1. StefMa, 24.05.2012 #1
    StefMa

    StefMa Threadstarter Gewerbliches Mitglied

    Beiträge:
    2,054
    Erhaltene Danke:
    413
    Registriert seit:
    16.10.2010
    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
     
  2. Unicate, 24.05.2012 #2
    Unicate

    Unicate Android-Experte

    Beiträge:
    473
    Erhaltene Danke:
    57
    Registriert seit:
    09.08.2010
    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: 24.05.2012
  3. StefMa, 24.05.2012 #3
    StefMa

    StefMa Threadstarter Gewerbliches Mitglied

    Beiträge:
    2,054
    Erhaltene Danke:
    413
    Registriert seit:
    16.10.2010
    HI,

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

    Gruß
     
  4. Unicate, 24.05.2012 #4
    Unicate

    Unicate Android-Experte

    Beiträge:
    473
    Erhaltene Danke:
    57
    Registriert seit:
    09.08.2010
    Ich würde in der Beschreibung der Klasse anfangen. wenn da nix zu finden ist ist Wireshark durchaus eine gute Lösung.
     
  5. strider, 24.05.2012 #5
    strider

    strider Erfahrener Benutzer

    Beiträge:
    208
    Erhaltene Danke:
    45
    Registriert seit:
    30.09.2011
    Phone:
    Nexus S
    telnet webseite.de 80

    GET / HTTP/1.0

    Ist auch noch eine Möglichkeit.
     
  6. StefMa, 24.05.2012 #6
    StefMa

    StefMa Threadstarter Gewerbliches Mitglied

    Beiträge:
    2,054
    Erhaltene Danke:
    413
    Registriert seit:
    16.10.2010
    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ß
     
  7. strider, 24.05.2012 #7
    strider

    strider Erfahrener Benutzer

    Beiträge:
    208
    Erhaltene Danke:
    45
    Registriert seit:
    30.09.2011
    Phone:
    Nexus S
    Du kannst dir damit den response code des Webservers anschauen ohne Whireshark.
     
  8. StefMa, 11.06.2012 #8
    StefMa

    StefMa Threadstarter Gewerbliches Mitglied

    Beiträge:
    2,054
    Erhaltene Danke:
    413
    Registriert seit:
    16.10.2010
    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..
     
  9. TheDarkRose, 11.06.2012 #9
    TheDarkRose

    TheDarkRose Gewerbliches Mitglied

    Beiträge:
    1,292
    Erhaltene Danke:
    136
    Registriert seit:
    20.08.2010
    Code:
    <meta http-equiv="refresh" content="0; URL=/web/">
    DAS ist ein Redirect per HTML-Metadaten und leidet auf den dort angegeben Ordner weiter.
     
  10. StefMa, 12.06.2012 #10
    StefMa

    StefMa Threadstarter Gewerbliches Mitglied

    Beiträge:
    2,054
    Erhaltene Danke:
    413
    Registriert seit:
    16.10.2010
    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.
     
  11. TheDarkRose, 12.06.2012 #11
    TheDarkRose

    TheDarkRose Gewerbliches Mitglied

    Beiträge:
    1,292
    Erhaltene Danke:
    136
    Registriert seit:
    20.08.2010
    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
     
    StefMa bedankt sich.
  12. StefMa, 12.06.2012 #12
    StefMa

    StefMa Threadstarter Gewerbliches Mitglied

    Beiträge:
    2,054
    Erhaltene Danke:
    413
    Registriert seit:
    16.10.2010
    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
     
  13. TheDarkRose, 12.06.2012 #13
    TheDarkRose

    TheDarkRose Gewerbliches Mitglied

    Beiträge:
    1,292
    Erhaltene Danke:
    136
    Registriert seit:
    20.08.2010
    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.
     
    StefMa bedankt sich.
  14. StefMa, 12.06.2012 #14
    StefMa

    StefMa Threadstarter Gewerbliches Mitglied

    Beiträge:
    2,054
    Erhaltene Danke:
    413
    Registriert seit:
    16.10.2010
    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
     
  15. TheDarkRose, 12.06.2012 #15
    TheDarkRose

    TheDarkRose Gewerbliches Mitglied

    Beiträge:
    1,292
    Erhaltene Danke:
    136
    Registriert seit:
    20.08.2010
    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.
     

Diese Seite empfehlen