Pobieranie kodu HTML strony

0

Czy jest jakaś biblioteka która umożliwia pobranie kodu html strony? Próbowałem skorzystać z Jsoup ale wywala mi błąd:
OkHttpClient: A connection to https://google.pl/ was leaked. Did you forget to close a response body?

try {
                 String html = Jsoup.connect("https://google.pl").get().html();

                Log.i("Code: ", html);
            }
            catch (Exception e){
                e.printStackTrace();
            }
0

Ten błąd informuje Cię o niepoprawnym użyciu OkHttp i nie jest związany z kodem, który wkleiłeś.

To znaczy, że kod, w którym korzystasz z OkHttp powoduje ten błąd. Nie zamykasz gdzieś odpowiedzi. Nie wiem gdzie, bo nie potrafię wróżyć

0

To znaczy, że kod, w którym korzystasz z OkHttp powoduje ten błąd. Nie zamykasz gdzieś odpowiedzi. Nie wiem gdzie, bo nie potrafię wróżyć

Tu jest mój cały kod

public class MainActivity extends AppCompatActivity {

    public class DownloadImage extends AsyncTask <String,Void, String>{


        @Override
        protected String doInBackground(String... urls) {

            try {
                 String html = Jsoup.connect("https://google.pl").get().html();
                 Log.i("code", html);
               return html;

            }
            catch (Exception e){
                return e.toString();
                
            }




        }
    }



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

        DownloadImage downloadImage=new DownloadImage();
        try {
            downloadImage.execute("").get();
        }catch (Exception e)
        {
            e.printStackTrace();
        }
        
    }
}
0

Nie wspomniałeś, że to Android. Pokaż cały build.gradle, w którym dodałeś jsoup jako zależność.

0
Michał Sikora napisał(a):

Nie wspomniałeś, że to Android. Pokaż cały build.gradle, w którym dodałeś jsoup jako zależność.

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.example.guessthecelebrity"
        minSdkVersion 15
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation files('libs/jsoup-1.11.3.jar')
}

1

Wróże z fusów:
Jsoup.connect("https://google.pl") zwraca jakiś obiekt, który potem trzeba zamknąć, a ty tylko odczytujesz sobie dane.

0

Pisząc wywala błąd miałeś na myśli, że leci wyjątek i wywala się aplikacja (albo nie dostajesz tego HTMLa) czy po prostu loguje się taki komunikat?

Jeśli to drugie, to napisz na jakim Androidzie testujesz, bo to zachowanie zostało zmienione półtora roku temu i na nowych urządzeniach nie powinieneś tego widzieć - https://android.googlesource.com/platform/external/okhttp/+/7950c964e992fa94c18a60b0f69077a017a74334%5E%21.

0

Nie prowadź wątku w komentarzach.

Jak sprawdzasz czy ładuje się cały html? Log to nie jest odpowiedni sposób, bo ogranicza do wyświetlania ~4000 znaków.

0
Michał Sikora napisał(a):

Nie prowadź wątku w komentarzach.

Jak sprawdzasz czy ładuje się cały html? Log to nie jest odpowiedni sposób, bo ogranicza do wyświetlania ~4000 znaków.

Ale tutaj nie ma nawet 1000 znaków. kod strony wyświetla się od "code:"

0

Skąd ta pewność? Co jest dalej po ;goo? Zaloguj długość stringa to się przekonasz, że jest ich więcej.

0

Rzeczywiście, długość tekstu to 264841 znaki. Jest więc jakiś prosty sposób aby to wyświetlić?

1 użytkowników online, w tym zalogowanych: 0, gości: 1