Problem bei Webinhalte herunterladen (Java - AndroidStudio)

  • 5 Antworten
  • Letztes Antwortdatum
Status
Dieses Thema wurde gelöst! Zur Lösung springen…
L

louisbgt

Neues Mitglied
0
Hallo ich bin gerade bei einem Tutorial angekommen, wo es darum geht die xml einer Webseite herunterzuladen
Javascript:
package com.udemy.downloadingwebcontent;

import androidx.appcompat.app.AppCompatActivity;

import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;

import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.ExecutionException;

public class MainActivity extends AppCompatActivity {
    // <wird übergeben, nichts wird zurückgegeben>
    public class DownloadTask extends AsyncTask<String, Void, String> {

        @Override
        protected String doInBackground(String... urls) {
            String result = "";
            URL url; // initialisieren wir erst später
            HttpURLConnection urlConnection = null;

            // mehrstufiger Prozess: 1. brauch ich den Link auf den ich verbinden will
            // 2. dann muss ich auf den Link verbinden
            // 3. dann brauch ich ein InputStream, der die Daten in einer bestimmten Form ausliest
            // wir Verbindung/ Kanal, wo die Daten durch gehen
            // 4. muss ich InputStream mit ...Reader auslesen
            // 5. nun können wir daraus Daten machen

            try {
                url = new URL(urls[0]);
                urlConnection = (HttpURLConnection) url.openConnection();
                InputStream in = urlConnection.getInputStream();
                InputStreamReader reader = new InputStreamReader(in);
                int data = reader.read();

                while (data != -1){ //solange nicht minus 1 ist
                    char current = (char) data;  //gib die aktuellen Daten in Buchstaben aus, jedes einzelne Zeichen
                    // befüllen von result
                    // name += ...; heißt wir hängen an
                    result += current;

                    data = reader.read();
                }

                //nach der while-Schleife, sprich nach dem alle Daten ausgelesen wurden
                //geben wir result aus
                return result;


            } catch (MalformedURLException e) {
                e.printStackTrace();
                return "Failed";
            } catch (Exception e) { //alle Probleme
                e.printStackTrace();
                return "Failed";
            }


            // return null; >> brauchen wir nicht mehr, da alle Stränge return zurück geben
            // da oben vor Methodenname String steht
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Klasse aufrufen
        // lege Projekt an und initialisiere es
        DownloadTask task = new DownloadTask();
        String result = null;

        try {
            result = task.execute("https://zappycode.com/").get();
        } catch (ExecutionException e) { //Verbindung wurde unterbrochen
            e.printStackTrace();
        } catch (InterruptedException e) { //Fehler bei der Ausführung des Ganzen
            e.printStackTrace();
        } catch (Exception e){ // für jede andere Exception, wie z.B. gar kein Internet
            e.printStackTrace();
        }

        Log.i("Result", result);

        //wir brauchen Erlaubnis um aufs Internet zuzugreifen
        // sonst: Logcat > D/NetworkSecurityConfig: No Network Security Config specified, using platform default
        // deshalb: im AndroidManifest.xml
    }
}
und hier noch das AndroidManifest mit der einen hinzugefügten Berechtigung:
XML:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.udemy.downloadingwebcontent">

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.DownloadingWebContent">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Ich habe den Code exakt wie im Video angegeben abgeschrieben, allerdings schlägt return im Logcat fehl:
1609783035915.png

Die anderen Teilnehmer klagen über das gleiche Problem, allerdings funktioniert es bei dem Mann, der das Tutorial gemacht hat.

Könnt ihr mir vllt. helfen das Problem zu beheben?
Und für eine kleine Erklärung bezüglich dieses Projektes wäre ich auch sehr dankbar, denn trotzmehrmaligen schauens des Tutorials verstehe ich es leider nicht.

Mit freundlichen Grüßen
 
Empfohlene Antwort(en)
Du willst von einer „Https“ Seilte laden benutzt aber in deiner Klasse nur eine HttpURLConnection.
Wenn Https dann HttpsURLConnection

wo es darum geht die xml einer Webseite herunterzuladen
das soll bestimmt HTML heißen und nicht XML
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: louisbgt
Alle Antworten (5)
Du willst von einer „Https“ Seilte laden benutzt aber in deiner Klasse nur eine HttpURLConnection.
Wenn Https dann HttpsURLConnection

wo es darum geht die xml einer Webseite herunterzuladen
das soll bestimmt HTML heißen und nicht XML
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: louisbgt
Leider weiterhin failed.
 
versuche doch mal eine andere webseite die es auch ohne "s" gibt
 
Nach dem Neustart von AndroidStudio funktioniert es.
Beiträge automatisch zusammengeführt:

jogimuc schrieb:
versuche doch mal eine andere webseite die es auch ohne "s" gibt
Was bedeutet eigentlich das s und mal ohne?
 
Zuletzt bearbeitet:
Https:// und Http://
Grundlagen Http Protokoll „S“ mit SSL Verschlüsslung
 
  • Danke
Reaktionen: louisbgt
Status
Dieses Thema wurde gelöst! Zur Lösung springen…

Ähnliche Themen

L
Antworten
0
Aufrufe
612
louisbgt
L
L
Antworten
3
Aufrufe
1.092
jogimuc
J
Zurück
Oben Unten