Извините за плохой английский.Иногда FileNotFoundException по адресу:
Моя проблема настолько похожа на эту проблему «FileNotFoundException at URL» , но иногда она дает ошибку и не продолжается, но иногда она отлично работает. Эта проблема возникает в первом соединении. Какая может быть проблема, которая заставляет ее работать иногда и иногда не работает?
10-10 02:19:41.128 9667-9819/? W/System.err﹕ java.io.FileNotFoundException: http://cdn59.my.mail.ru/v/59908302.mp4?slave[]=s%3Ahttp%3A%2F%2Fvideo-cephgw1.i%3A8080%2Frados%2F59908302-v&p=f&expire_at=1476068400&touch=1475880462®=76&sign=dd01f023e682705a105440ab5e93f5cb38cfeadd
10-10 02:19:41.128 9667-9819/? W/System.err﹕ at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:186)
10-10 02:19:41.128 9667-9819/? W/System.err﹕ at makgun.kturk.MRDownloader$1.doInBackground(MRDownloader.java:105)
10-10 02:19:41.128 9667-9819/? W/System.err﹕ at makgun.kturk.MRDownloader$1.doInBackground(MRDownloader.java:39)
10-10 02:19:41.128 9667-9819/? W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:288)
10-10 02:19:41.128 9667-9819/? W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:237)
10-10 02:19:41.128 9667-9819/? W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
10-10 02:19:41.128 9667-9819/? W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
10-10 02:19:41.128 9667-9819/? W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
10-10 02:19:41.128 9667-9819/? W/System.err﹕ at java.lang.Thread.run(Thread.java:841)
MRDownloader:
@Override
protected String doInBackground(String... urls) {
try {
String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" +name;
File file = new File(path);
int total;
if (file.exists())total=Integer.parseInt(String.valueOf(file.length()));
else total=0;
//New Added
if (urls[0].startsWith("//"))urls[0]="http:"+urls[0];
//New Added finished
URL url = new URL(urls[0]);
HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();
OutputStream output = new FileOutputStream(path, true);
urlConnection.addRequestProperty("Range", "bytes=" + file.length() + "-");
if(!Cookie.isEmpty())
urlConnection.addRequestProperty("Cookie", "video_key=" +Cookie);
urlConnection.setRequestProperty("User-Agent","Mozilla/5.0");
urlConnection.setRequestProperty("Accept","*/*");
urlConnection.setConnectTimeout(7000);
urlConnection.setReadTimeout(7000);
urlConnection.connect();
int lenghtOfFile = urlConnection.getContentLength();
PD.setMax(lenghtOfFile+total);
InputStream input = new BufferedInputStream(urlConnection.getInputStream());
byte data[] = new byte[1024];
// int total=Integer.parseInt(String.valueOf(file.length()));
int count;
Log.d("MakgunLENGHT-OF-FILE", Integer.toString(lenghtOfFile));
while ((count = input.read(data)) != -1) {
total += count;
PD.setProgress(total);
output.write(data, 0, count);
if (pause){output.flush();output.close();input.close();if (PD.isShowing()) PD.dismiss();break;}
}
output.flush();
output.close();
input.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
return null;
}
Вы можете использовать эту ссылку, чтобы попробовать. TryLink. Когда вы запрашиваете эту ссылку, она генерирует куки-файл cookie «video_key», а тело ответа содержит всю информацию, в которой вы нуждаетесь, как поток URL-адреса видео. Я не копирую весь файл java, поэтому, если вам нужно, я могу добавить еще. Благодарю.
В настоящее время я успел это понять и, наконец, выяснил, почему и когда это происходит. Я хочу поделиться этим для других пользователей. Почему это происходит, когда сервер отправляет неверный запрос и для этого сайта иногда отправляет Service Unavaible 503 и этот отказ кода. Но добавив условие повторить максимум 10 раз, он работает как шарм. По крайней мере один клик достаточно, и он повторяется максимум 10 раз, и обычно он получает 2xx код ответа с сервера через 2-3 раза. Если полученный код 2xx прерывает цикл. И он больше не перезагружается. Это решило мою проблему. – makgun