2015-09-01 38 views
1

我在我的項目中使用Picasso和MapBox。只要MapBox在其依賴項中有OkHTTP,我就不得不使用OkHTTP。 但是,當我將OkHTTP添加到gradle依賴關係時,Picasso無法加載其URL中包含豎線字符(「|」)的圖像。android - 帶有OkHTTP的畢加索無法在其URL中加載包含豎線字符(「|」)的圖像

沒有OkHTTP:

Picasso.with(context).load("http://example.com/image.jpg").into(imageView); //OK Picasso.with(context).load("http://example.com/image.jpg|100:100").into(imageView); //OK

隨着OkHTTP:

Picasso.with(context).load("http://example.com/image.jpg").into(imageView); //09-01 19:07:35.280 24916-24916/com.test D/Picasso﹕ Main errored [R6]+287ms

Picasso.with(context).load("http://example.com/image.jpg|100:100").into(imageView); //OK

所以,我的問題是:如何避免,如果另一個庫需要使用OkHTTP與畢加索OkHTTP或如何解決此問題並繼續使用OkHTTP?

回答

0

我已經在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); 
0

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

+0

謝謝,但它不起作用。 –

0

我有同樣的問題,當我開始使用OkHttp。問題似乎是垂直欄字符必須被編碼。只需將其替換爲編碼值(%7C)即可正常工作。在你的情況下,url變成:

http://example.com/image.jpg%7C100:100 
相關問題