如何使用Fresco将图片设置为Google Play图书API缩略图?

时间:2018-08-09 18:36:49

标签: android fresco

我正在尝试使用Fresco(我也曾尝试使用Glide和Picasso)从URL加载Google Play图书图片缩略图(我也尝试过使用它)。我可以加载其他图像(例如https://i.imgur.com/6zDqjm8.jpg),但是当我使用Google Play图书缩略图链接(例如http://books.google.com/books/content?id=F1wgqlNi8AMC&printsec=frontcover&img=1&zoom=5&edge=curl&source=gbs_api)时,仅显示占位符图像。

我也尝试过在Uri.parse代码中的链接末尾添加“ .jpeg”(因为在网络浏览器中该图像仍显示),但这没什么区别。

您知道这是为什么和/或我做错了什么吗?

我的清单中有INTERNET权限。我的XML文件中也有Fresco命名空间。

我的壁画代码(摘自Getting Started with Fresco指南):

Uri uri = Uri.parse("http://books.google.com/books/content?id=F1wgqlNi8AMC&printsec=frontcover&img=1&zoom=5&edge=curl&source=gbs_api");
SimpleDraweeView draweeView = findViewById(R.id.my_image_view);
draweeView.setImageURI(uri);

SimpleDraweeView的XML代码:

 <com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/my_image_view"
        android:layout_width="130dp"
        android:layout_height="130dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView"
        fresco:placeholderImage="@drawable/search_white_24dp" />

我正在使用的JSON(更多Google Play图书缩略图):https://pastebin.com/hq4AFMRb

如果您需要更多信息(例如XML),请告诉我。如果可以,我不介意使用其他第三方库(包括Glide或Picasso)。

1 个答案:

答案 0 :(得分:4)

看起来,不受保护的流量不再可用于向Google图书服务器发出请求(请注意下面的Glide日志):

  

08-09 22:31:06.428 7606-7606 / com.sandbox.test W / Glide:加载失败   http://books.google.com/books/content?id=F1wgqlNi8AMC&printsec=frontcover&img=1&zoom=5&edge=curl&source=gbs_api   尺寸为[2392x2392]       com.bumptech.glide.load.engine.GlideException类:无法加载资源       原因有两个:       java.io.IOException(不允许对books.google.com的明文HTTP流量)       java.io.FileNotFoundException(无内容提供者:http://books.google.com/books/content?id=F1wgqlNi8AMC&printsec=frontcover&img=1&zoom=5&edge=curl&source=gbs_api)        致电GlideException#logRootCauses(String)了解更多详细信息         原因(2之1):com.bumptech.glide.load.engine.GlideException类:提取数据失败,   类java.io.InputStream,REMOTE       原因有1:

因此,您只需在API的图片网址协议中添加“ S” 字母,然后通过 HTTPS 发出请求。

就我而言,这就是窍门。