2016-10-31 4 views
-2

Ich habe eine App, die eine Zeichenfolge von einer externen URL erhalten muss, die ich nicht besitze. Zum Beispiel, ich brauche die App finden Sie den Ausdruck zwischen "Punkt A" bis "Punkt B" im Text der externen HTML-Datei und den gesamten Text zwischen den 2 Punkten.Android - Zeichenfolge von externer URL kopieren - Ist das möglich?

Ich dachte, es war möglich, indem Sie den Text über das Webview getan, aber ich lese in einem anderen Beitrag, dass Android meine App nicht erlaubt, den Text in Webview kopieren und dann in eine Textansicht einfügen.

Also, ist es unmöglich zu tun? Ich denke darüber nach, was wäre ein besserer Weg, es zu tun ... kannst du mir etwas vorschlagen? Vielleicht mit einer html/asp-Datei in meinem Server, um diese Suche zu tun und dann würde ich die Strings durch meine "Website-Suche" -Tool bekommen.

Ich weiß nicht, ob es der beste Weg ist und kann mir nicht vorstellen, wie könnte ich das tun.

Danke für jede Art von Vorschlag.

Antwort

0

Ich nehme an, Sie können die URL von der WebView zugreifen. Sie können dann Ihre eigene Anfrage stellen, um den HTML-Code zu erhalten und die Suche durchzuführen.

Etwas wie:

new Thread(new Runnable(){ 
     @Override 
     public void run() { 

      URL url; 
      HttpURLConnection connection = null; 
      try { 
       url = new URL("http://www.google.com"); 

       connection = (HttpURLConnection)url.openConnection(); 
       InputStream is = connection.getInputStream(); 
       InputStreamReader isw = new InputStreamReader(is); 
       BufferedReader br = new BufferedReader(isw); 

       StringBuilder builder = new StringBuilder(); 
       String line; 
       while ((line = br.readLine()) != null) { 
        builder.append(line).append('\n'); 
       } 

       String html = builder.toString(); 
       Log.d("HTML", html); 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } finally { 
       if (connection != null) { 
        connection.disconnect(); 
       } 
      } 
     } 
    }).start(); 
+0

Danke für Ihre Kommentare! Ich habe diesen Code versucht, aber die App kann die Zeichenfolge nicht bekommen ... Ich habe eine Toast.makeText Nachricht unter "endlich" und es hält mich diese Toast-Nachricht anzeigen ... Ich habe versucht, "r.readLine" für " br.readLine "... Gibt es noch etwas, das ich ausprobieren könnte? –

+0

Ich bearbeitete die Antwort, behebt einige Code-Fehler und wickelte den Netzwerk-Anruf in einen anderen Thread ein. Jetzt sollten Sie das Ergebnis in Log.d sehen. Anstelle von Thread sollten Sie eine andere Klasse wie AsyncTask verwenden, um den Anruf zu tätigen. Ich habe Thread verwendet, um das Lesen zu erleichtern. –

0
URL externalURL = new URL("http://stackoverflow.com/questions/40347333/android- 
     copy-string-from-external-url-is-it-possible"); 
BufferedReader in = new BufferedReader(new InputStreamReader(externalURL.openStream())); 
String inputLine; 
while ((inputLine = in.readLine()) != null) { 
    response += inputLine + '\n'; 
} 
in.close(); 
return response 

Führen Sie dieses Stück Code auf einem anderen Thread statt main (AsyncTask wird die Arbeit tun), das Parsen tun, gelten response auf Ihre TextView und Sie haben Ihr externer URL-Leser.

+0

Thaks für das Kommentieren! Ich habe versucht, das zu tun, aber "readLine" funktioniert nicht mit AsyncTask ... es heißt "error: illegal start of type". Gibt es noch etwas, das ich versuchen könnte? –

+0

Sie müssen alles in try/catch mit der Behandlung 'MalformedURLException' und' IOException' setzen. Wenn Sie diesen Code in AndroidStudio ausführen, geben Sie "alt + enter" ein und fügen Sie eine Fangklausel hinzu. – Drez

+0

Und für diesen illegalen Start, überprüfen Sie Ihre Zahnspange. Und stellen Sie sicher, dass Ihr 'doInBackground' den' String' Wert zurückgibt. – Drez

Verwandte Themen