RNFetchBlob не может скачать APK, но в браузере URL может загрузить файл - PullRequest
0 голосов
/ 11 ноября 2019

Я разрабатываю приложение на родном языке для Android, я использую RNFetchBlob для загрузки APK. и в Android RNFetchBlob использует библиотеку OkHttp для загрузки файла. Но APK не может скачать. Когда я помещаю ссылку в Android, он может загрузить файл успешно.

Я пытаюсь заменить его другим URL-адресом, RNFetchBlob может загрузить файл.

Но мой URL-адрес является простым URL: http://host:port/AppDownLoad/publish/some.apk

Конфигурация RNFetchBlob являетсяниже:

 RNFetchBlob.config({
      path: dirs.DCIMDir + "/Some.apk",
      timeout:180000,
    })
      .fetch("GET", APK_URL)
      .progress({ count: 10 }, (received, total) => {
        let currentProgress = received / total;
      })
      .then(res => {

        if(res.respInfo.timeout){
          Linking.openURL(APKURL)
          return;
        }
        android.actionViewIntent(
         res.path(),
        "application/vnd.android.package-archive"
        );
      })
      .catch(error => {
        console.log(error); 
        // Linking.openURL(APKURL)
      });

исходный код третьей библиотеки OkHttp:

OkHttpClient.Builder clientBuilder;
if (this.options.trusty) {
                clientBuilder = RNFetchBlobUtils.getUnsafeOkHttpClient(client);
            } else {
                clientBuilder = client.newBuilder();
            }

            final Request.Builder builder = new Request.Builder();
            try {
                builder.url(new URL(url));
            } catch (MalformedURLException e) {
                e.printStackTrace();
            }
            builder.method("GET", null);
            final Request req = builder.build();
            clientBuilder.connectionPool(pool);
            clientBuilder.retryOnConnectionFailure(false);
            clientBuilder.followRedirects(options.followRedirect);
            clientBuilder.followSslRedirects(options.followRedirect);
            clientBuilder.retryOnConnectionFailure(true);

            OkHttpClient client = enableTls12OnPreLollipop(clientBuilder).build();

            Call call =  client.newCall(req);
            taskTable.put(taskId, call);
            call.enqueue(new okhttp3.Callback(),{callback}


информация об ошибке the content-length is disagreed with the stream Может кто-нибудь сказать мне, почему?

...