Gradle android-使用OkHTTP的毕加索无法加载其URL中包含竖线字符(“|”)的图像

Gradle android-使用OkHTTP的毕加索无法加载其URL中包含竖线字符(“|”)的图像,gradle,mapbox,picasso,okhttp,Gradle,Mapbox,Picasso,Okhttp,我在我的项目中使用毕加索和MapBox。只要MapBox的依赖项中有OkHTTP,我就不得不使用OkHTTP。 但当我将OkHTTP添加到gradle dependencies时,毕加索无法加载URL中包含竖线字符(“|”)的图像 没有OkHTTP: Picasso.with(context).load(“http://example.com/image.jpg)插入(图像视图)//好啊 毕加索.with(context).load(“http://example.com/image.jpg|1

我在我的项目中使用毕加索和MapBox。只要MapBox的依赖项中有OkHTTP,我就不得不使用OkHTTP。 但当我将OkHTTP添加到gradle dependencies时,毕加索无法加载URL中包含竖线字符(“|”)的图像

没有OkHTTP:

Picasso.with(context).load(“http://example.com/image.jpg)插入(图像视图)//好啊
毕加索.with(context).load(“http://example.com/image.jpg|100:100“)。插入(图像视图)//好的

使用OkHTTP:

Picasso.with(context).load(“http://example.com/image.jpg)插入(图像视图);
//09-01 19:07:35.280 24916-24916/com.test D/毕加索﹕ 主错误[R6]+287ms

Picasso.with(context).load(“http://example.com/image.jpg|100:100“)。插入(图像视图)//好的


因此,我的问题是:如果另一个库需要OkHTTP,如何避免在毕加索中使用OkHTTP,或者如何解决此问题并继续使用OkHTTP?

尝试OkHTTP 2.5.0。它支持包含
|
字符的URL。

试试OkHttp 2.5.0。它支持包含
|
字符的URL。

我已通过在
MyApplication.onCreate()方法中添加下一个代码解决了此问题:

    Picasso picasso = new Picasso.Builder(getApplicationContext())
            .requestTransformer(new Picasso.RequestTransformer() {
                @Override
                public Request transformRequest(Request request) {
                    Uri oldImageUri = request.uri;
                    Uri newImageUri = oldImageUri.buildUpon().query(oldImageUri.getEncodedQuery()).build();
                    return request.buildUpon().setUri(newImageUri).build();
                }
            }).build();
    picasso.setLoggingEnabled(true);
    Picasso.setSingletonInstance(picasso);

我通过在
MyApplication.onCreate()
方法中添加下一个代码解决了这个问题:

    Picasso picasso = new Picasso.Builder(getApplicationContext())
            .requestTransformer(new Picasso.RequestTransformer() {
                @Override
                public Request transformRequest(Request request) {
                    Uri oldImageUri = request.uri;
                    Uri newImageUri = oldImageUri.buildUpon().query(oldImageUri.getEncodedQuery()).build();
                    return request.buildUpon().setUri(newImageUri).build();
                }
            }).build();
    picasso.setLoggingEnabled(true);
    Picasso.setSingletonInstance(picasso);

当我开始使用OkHttp时,我也遇到了同样的问题。问题似乎是垂直条字符必须编码。只需将其替换为编码值(%7C),它就可以正常工作。在您的情况下,url变为:

http://example.com/image.jpg%7C100:100

当我开始使用OkHttp时,我也遇到了同样的问题。问题似乎是垂直条字符必须编码。只需将其替换为编码值(%7C),它就可以正常工作。在您的情况下,url变为:

http://example.com/image.jpg%7C100:100