Загрузите большой pdf-файл с помощью jsoup

Я хотел бы загрузить большой файл pdf с помощью jsoup. Я пытаюсь изменить таймаут и maxBodySize, но самый большой файл, который я мог скачать, был около 11 МБ. Я думаю, что если есть способ сделать что-то вроде буферизации. Ниже мой код.

public class Download extends Activity { static public String nextPage; static public Response file; static public Connection.Response res; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); Bundle b = new Bundle(); b = getIntent().getExtras(); nextPage = b.getString("key"); new Login().execute(); finish(); } private class Login extends AsyncTask<Void, Void, Void> { @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected Void doInBackground(Void... params) { try { res = Jsoup.connect("http://www.eclass.teikal.gr/eclass2/") .ignoreContentType(true).userAgent("Mozilla/5.0") .execute(); SharedPreferences pref = getSharedPreferences( MainActivity.PREFS_NAME, MODE_PRIVATE); String username1 = pref.getString(MainActivity.PREF_USERNAME, null); String password1 = pref.getString(MainActivity.PREF_PASSWORD, null); file = (Response) Jsoup .connect("http://www.eclass.teikal.gr/eclass2/") .ignoreContentType(true).userAgent("Mozilla/5.0") .maxBodySize(1024*1024*10*2) .timeout(70000*10) .cookies(res.cookies()).data("uname", username1) .data("pass", password1).data("next", nextPage) .data("submit", "").method(Method.POST).execute(); } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Void result) { String PATH = Environment.getExternalStorageDirectory() + "/download/"; String name = "eclassTest.pdf"; FileOutputStream out; try { int len = file.bodyAsBytes().length; out = new FileOutputStream(new File(PATH + name)); out.write(file.bodyAsBytes(),0,len); out.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } } 

Надеюсь, кто-нибудь может мне помочь!

Я думаю, что лучше загружать любой двоичный файл через HTTPConnection:

  InputStream input = null; OutputStream output = null; HttpURLConnection connection = null; try { URL url = new URL("http://example.com/file.pdf"); connection = (HttpURLConnection) url.openConnection(); connection.connect(); // expect HTTP 200 OK, so we don't mistakenly save error report // instead of the file if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) { return "Server returned HTTP " + connection.getResponseCode() + " " + connection.getResponseMessage(); } // this will be useful to display download percentage // might be -1: server did not report the length int fileLength = connection.getContentLength(); // download the file input = connection.getInputStream(); output = new FileOutputStream("/sdcard/file_name.extension"); byte data[] = new byte[4096]; int count; while ((count = input.read(data)) != -1) { output.write(data, 0, count); } } catch (Exception e) { return e.toString(); } finally { try { if (output != null) output.close(); if (input != null) input.close(); } catch (IOException ignored) { } if (connection != null) connection.disconnect(); } 

Jsoup предназначен для разбора и загрузки HTML-страниц, а не двоичных файлов.