0

アプリ内で画像ファイルをダウンロードしようとしていますが、ブラウザで画像を表示できるにもかかわらず、「java.io.FileNotFoundException」が発生し続けます。これは、ファイルをダウンロードすることを想定したコードです。ブラウザでリンクをテストできます

new Thread(new Runnable() {

            @Override
            public void run() {

                String filepath = Environment.getExternalStorageDirectory().getAbsolutePath();
                String sample = "https://yande.re/image/617a7bff242f2ec56ccfc84df53604fc/yande.re%20263544%20chibi%20shinomiya_himawari%20vividred_operation.jpg";
                try
                {   
                  URL url = new URL(sample);
                  HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                  urlConnection.setRequestMethod("POST");
                  urlConnection.setDoOutput(true);                   
                  urlConnection.connect();                  


                  File SDCardRoot = new File(Environment.getExternalStorageDirectory(),"Yandere/Wallpapers");
                  SDCardRoot.mkdirs();
                  String filename="downloadedFile.jpg";   
                  Log.i("Local filename:",""+filename);
                  File file = new File(SDCardRoot,filename);
                  if(file.createNewFile())
                  {
                    file.createNewFile();
                  }                 
                  FileOutputStream fileOutput = new FileOutputStream(file);
                  InputStream inputStream = urlConnection.getInputStream();
                  int totalSize = urlConnection.getContentLength();
                  int downloadedSize = 0;   
                  byte[] buffer = new byte[1024];
                  int bufferLength = 0;
                  while ( (bufferLength = inputStream.read(buffer)) > 0 ) 
                  {                 
                    fileOutput.write(buffer, 0, bufferLength);                  
                    downloadedSize += bufferLength;                 
                    Log.i("Progress:","downloadedSize:"+downloadedSize+"totalSize:"+ totalSize) ;
                  }             
                  fileOutput.close();
                  if(downloadedSize==totalSize) filepath=file.getPath();    
                } 
                catch (MalformedURLException e) 
                {
                  e.printStackTrace();
                } 
                catch (IOException e)
                {
                  filepath=null;
                  e.printStackTrace();
                }}
        }).start();

エラー:

 08-05 16:36:28.032: W/System.err(17064): java.io.FileNotFoundException: https://yande.re/image/617a7bff242f2ec56ccfc84df53604fc/yande.re%20263544%20chibi%20shinomiya_himawari%20vividred_operation.jpg
08-05 16:36:28.032: W/System.err(17064):    at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:186)
08-05 16:36:28.032: W/System.err(17064):    at libcore.net.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:271)
08-05 16:36:28.032: W/System.err(17064):    at angel.util.Downloader$1.run(Downloader.java:52)
08-05 16:36:28.032: W/System.err(17064):    at java.lang.Thread.run(Thread.java:856)
4

3 に答える 3

1

URL 文字列を次のように変更します。

https://yande.re/image/617a7bff242f2ec56ccfc84df53604fc/yande.re%20263544%20chibi%20shinomiya_himawari%20vividred_operation.jpg

" http://yande.re/image/617a7bff242f2ec56ccfc84df53604fc/yande.re%20263544%20chibi%20shinomiya_himawari%20vividred_operation.jpg "

実際に「https」を「http」に変更すると、機能するはずです。この変更により、私のために働いています。

于 2013-08-05T08:44:16.143 に答える
0

次の HTTP GET リクエスト メソッドを使用する必要があります。HTTP POST が Web サーバーでサポートされていないようです。

 urlConnection.setRequestMethod("GET");
于 2013-08-05T08:11:47.093 に答える