2

このコードは、Apache サーバーから問題なくダウンロードするときに機能します。しかし、win7にインストールされたiis 7.5 currentを使用してテストする場合。getInputStream(); では動作しないようです。ファイルをデバッグしてブラウザに貼り付けると、ファイルへの完全なアドレスが表示されますが、apkのダウンロードが開始されます

このサイトとインターネットを読むと、MIME TYPE .apk application/vnd.android.package-archive が追加されました

try {

                        URL url = new URL(prefs.getString("server_address", null) + "/updates/filename.apk");
                        HttpURLConnection c = (HttpURLConnection) url.openConnection();
                        c.setRequestMethod("GET");
                        c.setDoOutput(true);
                        c.connect();

                        String PATH = Environment.getExternalStorageDirectory() + "/download/";
                        File file = new File(PATH);
                        file.mkdirs();
                        File outputFile = new File(file, "filename.apk");
                        FileOutputStream fos = new FileOutputStream(outputFile);

                        InputStream is = c.getInputStream();

                        byte[] buffer = new byte[1024];
                        int len1 = 0;
                        while ((len1 = is.read(buffer)) != -1) {
                            fos.write(buffer, 0, len1);
                        }
                        fos.close();
                        is.close();



                        } catch (IOException e) {
                            Toast.makeText(context, "error!", Toast.LENGTH_LONG).show();
                        }
4

1 に答える 1

2

このコードを取り除くだけです:

      c.setRequestMethod("GET");
      c.setDoOutput(true);
      c.connect();

最初は必要ありません、2番目 c.setDoOutput(true);はリクエストメソッドをPOSTに変更しています...そしてそれが405メソッドが許可されていない理由です...

于 2012-10-11T11:22:08.390 に答える