2012-04-14 4 views
2

Ich versuche, die HTML-Quelle in einer Zeichenfolge von einer Website zu erhalten, die der Benutzer eingibt, der Code, den ich bisher haben sieht wie folgt aus:Lesen HTML-Quellcode von Android App

public String getURLContent(String url) 
{ 
    try 
    { 
     DefaultHttpClient httpClient = new DefaultHttpClient(); 
     HttpGet httpGet = new HttpGet(url); 
     ResponseHandler<String> resHandler = new BasicResponseHandler(); 
     String page = httpClient.execute(httpGet, resHandler); 
     return page; 
    } 
    catch (ClientProtocolException e) 
    { 
     e.printStackTrace(); 
     return ""; 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
     return ""; 
    } 
} 

Jedes Mal, wenn ich versuchen Sie, dies auszuführen Ich traf den zweiten Catch (IOException), die laut der Dokumentation bedeutet, der Server konnte keine gültige Antwort geben ... Ich teste dies mit Websites wie "http: \ www.google.com \", also werden reagieren sie sollten auf jeden Fall

+0

Haben Sie die erforderlichen Berechtigungen wie android.permission.INTERNET hinzugefügt? – Jems

+0

Ich habe nur diese eine Erlaubnis: gibt es andere? – CHollman82

+0

Wenn das Ihre URL ist, dann ist es falsch. Sie würden prolly zwei Schrägstriche vor dem 'www' – FoamyGuy

Antwort

1

Der Code ist in Ordnung. Stellen Sie sicher, dass Sie komplette Website Pfad einfügen: http://www. [page] . [domain] zB .: http://www.google.com Und fügen Sie diese Berechtigung AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET" /> 

kurz vor (wenn es neue Projekt ist):

<application android:label="@string/app_name"> 

Voll Beispiel:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
      package="com.example" 
      android:versionCode="1" 
      android:versionName="1.0"> 
    <uses-sdk android:minSdkVersion="10"/> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <application android:label="@string/app_name"> 
     <activity android:name="MyActivity" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN"/> 
       <category android:name="android.intent.category.LAUNCHER"/> 
      </intent-filter> 
     </activity> 
    </application> 
</manifest> 
+0

Danke, mein Manifest sieht genau so aus, ich bin mir sicher, dass ich die richtigen Adressen benutze (ich habe viele versucht), immer noch nicht richtig funktioniert, wird immer noch als IOException abgefangen, wenn ich httpClient.execute() aufruft. .. Ich ziehe mir jetzt die Haare aus, dass ihr mir gesagt habt, dass der Code richtig aussieht! – CHollman82

+0

try Verwendung Debugger und überprüfen Variablen Werte Schritt für Schritt – deadfish

+0

und versuchen, setzen Website-Adresse in 'neue HttpGet (...' mindestens Sie sicher sein, dass Website-Adresse ist nicht das Problem – deadfish

1

es sei denn, Sie einige benutzerdefinierte Parsing mit der ganzen String tun wollen, ich würde Ihnen raten, einen HTML-Parser lib zu verwenden. Ich benutze HTML-Cleaner, zeigte here.

, dass alle Pferd Arbeit für Sie macht.

+0

Danke für den Tipp! – CHollman82

+0

Ich habe die Antwort bearbeitet, weil der Link fehlte. Entschuldigung, mein fehler. ;) –