web-dev-qa-db-fra.com

comment télécharger un fichier image en utilisant okhttpclient en Java

je voudrais demander comment télécharger le fichier image en utilisant okhttpclient en Java car j'ai besoin de télécharger le fichier avec la session voici le code donné officiellement, mais je ne sais pas comment l'utiliser pour le téléchargement en tant que fichier image

private final OkHttpClient client = new OkHttpClient();

  public void run() throws Exception {
    Request request = new Request.Builder()
        .url("http://publicobject.com/helloworld.txt")
        .build();

    Response response = client.newCall(request).execute();
    if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);

    Headers responseHeaders = response.headers();
    for (int i = 0; i < responseHeaders.size(); i++) {
      System.out.println(responseHeaders.name(i) + ": " + responseHeaders.value(i));
    }

    System.out.println(response.body().string());
  }
13
user3338304

Essayez quelque chose comme ça

InputStream inputStream = response.body().byteStream();
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
22
Jodi Goddard

Peut-être qu'il est un peu tard pour répondre à la question, mais cela peut aider quelqu'un à l'avenir. Je préfère toujours télécharger les photos en arrière-plan. Pour ce faire, utilisez OkHttpClient, vous devez utiliser callback:

    final Request request = new Request.Builder().url(url).build();
    okHttpClient.newCall(request).enqueue(new Callback() {
                @Override
                public void onFailure(Call call, IOException e) {
                    //Handle the error
                }

                @Override
                public void onResponse(Call call, Response response) throws IOException {
                    if (response.isSuccessful()){
                        final Bitmap bitmap = BitmapFactory.decodeStream(response.body().byteStream());
                       // Remember to set the bitmap in the main thread.
                        new Handler(Looper.getMainLooper()).post(new Runnable() {
                                @Override
                                public void run() {
                                    imageView.setImageBitmap(image);
                                }
                            });
                    }else {
                        //Handle the error
                    }
                }
            });
1
OfcOurSe