2016-01-16 2 views
0

Я попытался загрузить изображение из URL с помощью OkHttp. Он возвращает null.Загрузка изображения с использованием OkHttp дает нуль

У меня есть разрешения

<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 

Вот мой отдых Клиент

public class RestClient { 

    private static volatile RestClient instance; 
    private final OkHttpClient client; 

    private RestClient(Context context) throws Exception { 
     client = new OkHttpClient(); 
    } 

    public static RestClient getInstance(Context context) throws Exception { 
     if (instance == null) 
      synchronized (RestClient.class) { 
       if (instance == null) 
        instance = new RestClient(context); 
      } 
     return instance; 
    } 

    public Call uploadPicture(Callback callback){ 
     String link = "http://www.101apps.co.za/images/headers/101_logo_very_small.jpg"; 
     Request request = new Request.Builder() 
       .url(String.format(link)) 
       .get() 
       .build(); 
     Call call = client.newCall(request); 
     call.enqueue(callback); 
     return call; 
    } 
} 

Вот мой метод getPicture в основной деятельности

public void getPicByURL() { 

     try { 
      RestClient.getInstance(getActivity()).uploadPicture(new Callback() { 

       @Override 
       public void onFailure(Request request, IOException e) { 
        e.printStackTrace(); 
       } 

       @Override 
       public void onResponse(Response response) throws IOException { 

        final String json = response.body().string(); 
        if (response.code() == Constants.SUCCESSFUL_DOWNLOAD) { 
         ResponseBody in = response.body(); 
         InputStream inputStream = in.byteStream(); 
         BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream); 
               updateImage(BitmapFactory.decodeStream(bufferedInputStream)); 
        } 
       } 
      }); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
    private void updateImage(final Bitmap bitmap) { 

     new Handler(Looper.getMainLooper()).post(new Runnable() { 
      @Override 
      public void run() { 
       if (bitmap != null) { 
        mSelectedPic.setImageBitmap(bitmap); 
       } else { 
        Toast.makeText(getActivity(), R.string.show_error, Toast.LENGTH_SHORT).show(); 
       } 
      } 
     }); 
    } 

updateImage() метод принимает растровый = NULL. Я не знаю, что я делаю неправильно. Пожалуйста помоги.

+1

Вы проверили URL? открытие вашего url в borwser дает мне 404 не найдено – Raghunandan

+0

@ Raghunandan - да. Другой URL-адрес также возвращает null – Jackky777

+0

С этим изображением url ('http: // www.101apps.co.za/images/headers/101_logo_very_small.jpg') почему бы вам не использовать [Picasso] (http: //square.github .io/picasso /) или [Glide] (https://github.com/bumptech/glide)? – BNK

ответ

1

С текущего URL (http://www.101apps.co.za/images/headers/101_logo_very_small.jpg) и вашей цели (загружает изображение в ImageView только), я предлагаю вам использовать Picasso или Glide вместо этого.

Пример код при использовании Пикассо:

 ImageView imageView = (ImageView) findViewById(R.id.imageView); 
     Picasso.with(this) 
       .load("http://www.101apps.co.za/images/headers/101_logo_very_small.jpg") 
       .into(imageView); 

Надеется, что это помогает!

+0

это helps.thank) – Jackky777

+0

Если это так, вы должны принять мой ответ :) – BNK

0

Привет свою работу для меня попробовать это

OkHttpClient client = new OkHttpClient(); 
    Request request = new Request.Builder().url("https://www.101apps.co.za/images/headers/101_logo_very_small.jpg").get().build(); 

      client.newCall(request).enqueue(new Callback() { 
       @Override 
       public void onFailure(Call call, IOException e) { 
        Log.i("Tag","error"+e.getMessage()); 
       } 

       @Override 
       public void onResponse(Call call, final Response response) throws IOException { 

        runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 

        ImageView imageView (ImageView)findViewById(R.id.down_imageView); 

          ResponseBody in = response.body(); 
          InputStream inputStream = in.byteStream(); 
          Log.i("inputStream","inputstream value = "+inputStream); 
          // convert inputstram to bufferinoutstream 
          BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream); 
          Bitmap bitmap=BitmapFactory.decodeStream(bufferedInputStream); 
          Log.i("bitmap","bitmap value = "+bitmap); 
          imageView.setImageBitmap(bitmap); 

          } 
        }); 

       } 
      }); 
     } 
    }); 
Смежные вопросы