【问题标题】:Retrofit response body not parsing properly in android app改造响应体在 android 应用程序中无法正确解析
【发布时间】:2020-02-27 00:59:29
【问题描述】:

我在邮递员中收到此回复 在 Android 中,我的 response.body() 不为空,但仍然没有图像显示在图像视图中。

if (response.isSuccessful()) {
    if (response.body()!=null) { 
        Glide.with(getApplicationContext()).load(response.body()).into(iv_userimage_header);
        Toast.makeText(SubtitutesDashboard.this, "Image Set", Toast.LENGTH_SHORT).show();
    }
} 

这是邮递员的回复

【问题讨论】:

  • 你的方法不对。因为,你不能使用response.body() 方法。您可以使用response.body().byteStream() 方法。试试这个。
  • @MustafaYanık Glide.with(getApplicationContext()).load(response.body().byteStream()).into(iv_userimage_header);仍然没有设置图像
  • 好的。您可以将字节流转换为 Glide 支持的格式(uri、字节数组等)。你能试试这个吗?
  • @MustafaYanık 你能告诉我怎么做吗?
  • 不能使用glide直接加载url有什么原因吗?

标签: android imageview postman retrofit2


【解决方案1】:

试试这个,确保您使用okhttp3.ResponseBody 获得响应回调。所以像

...
call.enqueue(new Callback<ResponseBody>() {
        @Override
        public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) { 
...

然后使用

将您的图像作为位图获取
Bitmap bitmap = BitmapFactory.decodeStream(response.body().byteStream());

你可以直接给你设置这个位图ImageView

iv_userimage_header.setImageBitmap(bitmap);

或者使用 Glide 和 .asBitmap

更多信息请参考this SO post

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-24
    • 2011-04-12
    • 2018-05-17
    • 2018-09-04
    • 2015-08-18
    • 2020-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多