Source Code einer Website in String umwandeln

  • Antworten:6
Jan-David S.
  • Forum-Beiträge: 263

04.11.2014, 14:56:50 via Website

Hallo,

ich möchte den Quelltext einer (HTML-)Website in einen String umwandeln, um ihn dann in einem Textfeld anzeigen zu lassen. Der Link zu der Seite wäre in dem Fall https://blockchain.info/de/q/24hrprice. Wie ihr seht, besteht der Quelltext nur aus einer Zahl, deshalb sollte das doch möglich sein, oder? Habe schon einige Tutorials, etc. durch - leider bislang ohne nennenswerten Erfolg. Hoffentlich könnt ihr mir helfen =)

Beste Grüße, Jan

Antworten
Klaus T.
  • Forum-Beiträge: 8.183

04.11.2014, 15:45:40 via Website

Für sowas habe ich folgenden Code zum Testen. Ob das für Android verwendet werden kann, weiß ich nicht....denke aber schon.

     URL u = new URL("https://blockchain.info/de/q/24hrprice");
     URLConnection uc = u.openConnection();
     BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream()));
     while( (line = in.readLine()) != null ) {
        System.out.println(">"+line);
     }

Die while-Schleife brauchst du in deinem Fall wohl nicht. Ein readLine() wird reichen.

...ausserdem willst du nicht den Quelltext der Seite auslesen, sondern das Ergebnis des Aufruf.

— geändert am 04.11.2014, 15:50:26

if all else fails, read the instructions.

Antworten
Ludy
  • Admin
  • Forum-Beiträge: 7.957

04.11.2014, 15:51:13 via Website

Hallo Jan-David Stärk,

ansonsten gibt es hier noch ein Tutorial https://www.nextpit.de/forum/568854/tutorial-download-einer-webseite

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

☕ Buy Me A Coffee ☕

Lebensmittelwarnung-App

✨Meine Wunschliste✨

📲Telegram NextPit News📲

Antworten
JustinTime
  • Forum-Beiträge: 21

04.11.2014, 15:55:15 via Website

Der Code würde dir wohl eine Exception werfen weil du versuchst einen Netzwerk "Zugriff" aus dem UI-Thread zu machen.

Falls du android studio benutzt füge dort "compile 'com.mcxiaoke.volley:library:1.0.7'" in die Depencies hinzu. In eclipse kannst du unter http://search.maven.org/remotecontent?filepath=com/mcxiaoke/volley/library/1.0.7/library-1.0.7.jar die jar laden und einbinden.

Damit kannst du sehr komfortabel HTTP requests absenden als Beispiel:

   final TextView mTextView = (TextView) findViewById(R.id.text);
...

// Instantiate the RequestQueue.
RequestQueue queue = Volley.newRequestQueue(this);
String url ="http://www.google.com";

// Request a string response from the provided URL.
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
            new Response.Listener() {
    @Override
    public void onResponse(String response) {
        // Display the first 500 characters of the response string.
        mTextView.setText("Response is: "+ response.substring(0,500));
    }
}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        mTextView.setText("That didn't work!");
    }
});
// Add the request to the RequestQueue.
queue.add(stringRequest);

Etwas Dokumentation dazu findest du dort: https://developer.android.com/training/volley/simple.html

Antworten
Jan-David S.
  • Forum-Beiträge: 263

04.11.2014, 16:33:37 via Website

Danke schonmal für eure Antworten! Mal gucken was draus wird. Eine Lösung, die einfacher ist, gibt es nicht? Wie würdet ihr denn die API's auslesen? In meinem Fall die Zahl, die ausgegeben wird, wenn man auf https://blockchain.info/de/q/24hrprice connected.

Beste Grüße, Jan

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

04.11.2014, 16:53:08 via Website

@Jan: Das ist doch schon einfach in den oben geposteten Beispielen, dass kann ban beliebig erweitern und dann wird es erst kompliziert.
Was ist denn dein konkretes Problem?

— geändert am 04.11.2014, 16:53:19

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
JustinTime
  • Forum-Beiträge: 21

05.11.2014, 09:20:34 via Website

Etwas einfacher wäre es höchstens noch mit Ion das würde dann so aussehen:

Ion.with(context)
.load("https://blockchain.info/de/q/24hrprice")
.asString()
.setCallback(new FutureCallback<String>() {
   @Override
    public void onCompleted(Exception e, String result) {
        // Result ist dann der Text der HTML Code
    }
});

Das sieht zumindest etwas übersichtlicher aus. Viel kürzer geht es dann aber wirklich kaum.

Antworten