毕加索无法加载图片。

5

我使用Picasso已经有一段时间了,但是我不得不升级OkHttp库到2.0.0版本,因此我必须将Picasso升级到2.3.2版本。

然而,现在Picasso根本不会加载任何图像,ImageViews会被留空。没有任何错误显示出来,但是当我打开Picasso日志记录时,“Hunter”似乎已经被调度并开始执行,但是从未完成。

所有图像都可访问且相当小(大约为200px x 100px)。

我通过Picasso的“典型”方法加载图像:

Picasso.with(context).load(url).error(R.drawable.errorimg).into(imageView);

然而,errorimg 从未显示。

我可能做错了什么?

编辑:

这里是 Picasso 不起作用的一个地方的代码(PlaceListAdapter.java - getView 函数)。

public View getView(int position, View convertView, ViewGroup parent) 
{
    final PBNPlace ev = values.get(position);

    LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View rowView = inflater.inflate(R.layout.places_list_item, parent, false);

    TextView titleView = (TextView)rowView.findViewById(R.id.place_title);
    ImageView placeImage = (ImageView)rowView.findViewById(R.id.place_image);

    Picasso picasso = Picasso.with(context);
    picasso.load(ev.imageURL).error(R.drawable.chat).into(placeImage);

    titleView.setText(ev.name);

    return rowView;
}

如果你想从其他人那里获得更有用的帮助,请粘贴一些相关的代码。 - penkzhou
这张图片可能是最大的之一,因为它是一个横幅:http://www.portobynight.com/wp-content/uploads/2014/07/Hard-Club-08.07.2014-Tert%C3%BAlia-de-Folk-Baile-com-Jam-Session.jpg - Sagito
你调试并检索了传递给Picasso的URL吗?因为你可以在浏览器中查看它,并不意味着它会被Picasso解析。 - dymmeh
是的,在2.1.1中URL绝对有效。但现在我无法加载任何图像。:( - Sagito
什么是URL?我可以确认它使用OkHttp加载。(如果你不想在这里分享,我的邮箱是jesse@swank.ca。) - Jesse Wilson
@JesseWilson,没问题!我之前已经粘贴了一个示例图像URL,但是这里它是:http://www.portobynight.com/wp-content/uploads/2014/07/Hard-Club-08.07.2014-Tert%C3%BAlia-de-Folk-Baile-com-Jam-Session.jpg不过,我现在一直在尝试从谷歌加载随机图像,但是没有成功。 - Sagito
3个回答

3
当您升级OKHttp时,是否也升级了okhttp-urlconnection依赖项?
我曾经遇到过这个问题,结果发现我在build.gradle文件中仍然调用了okhttp-urlconnection 1.6.0版本。没有错误消息能够让我很快地意识到我疏忽了这一点。
将其更改为2.0.0就解决了问题。

我没有使用gradle,但是我找不到okhttp-urlconnection 2.0.0的jar包(我仍然找不到)。这可能是问题所在,我以为1.6.0是最新版本! - Sagito
不好意思,还是不行。我刚刚把1.6.0改成了2.0.0 RC1,但还是不好用。 :( - Sagito
https://www.versioneye.com/java/com.squareup.okhttp:okhttp-urlconnection/2.0.0 你可以试试这个,对我来说最终起作用了。 - Jayshil Dave

1

Picasso内部没有HTTP客户端,因此说它“支持HTTPS”意义不大。

当您传入一个URL(无论其是否具有http://或https://协议),我们会将其传递给最合适的HTTP客户端。

也许是java.net.HttpURLConnection。也许是那个性感的字节码包OkHttp。重要的是,无论是什么协议,我们都只让HTTP客户端处理它。

您遇到的任何http://与https://之间的问题都在于客户端的配置,而不是Picasso。

JakeWharton说出。

因此,对于加载图像,您只需要在gradle文件中添加以下依赖项。

compile 'com.squareup.okhttp:okhttp:2.2.+'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.+'
compile 'com.squareup.picasso:picasso:2.5.2'

参考资料: https://github.com/square/picasso/issues/500


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

这可能是最愚蠢的答案,但对此我很抱歉。有时候我们会忘记一些小事情。你检查过你的权限了吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接