我正在尝试使用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)。
答案 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 发出请求。
就我而言,这就是窍门。