2017-01-09 19 views
1

私のアプリケーションでPicasa 2.5.2を使用しています。それは正常に動作しますが、サードパーティ製のサーバーのいずれかから写真を読み込むことはできません。このサイトから画像をロードしようとすると、次のエラーが表示されます。Picasso:UnknownServiceException:クライアントでCLEARTEXT通信が有効になっていません

java.net.UnknownServiceException: CLEARTEXT communication not enabled for client 
at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:98) 
at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:196) 
at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:132) 
at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:101) 
at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42) 
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 
at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93) 
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 
at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93) 
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:120) 
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 
at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:179) 
at okhttp3.RealCall.execute(RealCall.java:63) 
at com.jakewharton.picasso.OkHttp3Downloader.load(OkHttp3Downloader.java:136) 
at com.squareup.picasso.NetworkRequestHandler.load(NetworkRequestHandler.java:47) 
at com.squareup.picasso.BitmapHunter.hunt(BitmapHunter.java:206) 
at com.squareup.picasso.BitmapHunter.run(BitmapHunter.java:159) 
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423) 
at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
at java.lang.Thread.run(Thread.java:818) 
at com.squareup.picasso.Utils$PicassoThread.run(Utils.java:411) 

ブラウザでこの画像を開くと、正常に読み込まれます。 URLはhttp://somesite.com/path/to/file/123456.jpgのようになります。ピカソのバグですか?それを修正するには?

答えて

3

Is it Picasso bug?

私はそうは思いません。 OkHttpはデフォルトで非SSL通信をブロックするようです。私は、古くからOkHttpでプレーンテキストのHTTPリクエストを行っていませんが、そのエラーメッセージに関連するコードの調査から見てきたことです。

How to fix it?

https URLを使用してください。

あなたは、プレーンhttpを使用しない限り、いくつかの悪魔の狂人は小さな街を爆破すると脅している場合は、あなたがサポートして喜んでであるものをHTTP接続の種類を示すためにconnectionSpecs()への呼び出しを含め、そのBuilder経由OkHttpClientを設定します。たとえば:

.connectionSpecs(Arrays.asList(ConnectionSpec.MODERN_TLS, ConnectionSpec.CLEARTEXT))

は "現代TLS"(適格かを正確に特定しない)とプレーンHTTPを可能にします。

次に、Okhttpを使って直接行っていることと同様に、PicassoにはOkHttpClientを使用します。

1

私はあなたの問題を調査しました。そして、あなたはhttps://github.com/fabric8io/kubernetes-client/issues/498の問題のようなokhttp3に問題があると思います - 認証接続に問題があります。今、あなたはあなたのイメージをロードするために、あなたのピカソを使用することができます

// create Picasso.Builder object 
Picasso.Builder picassoBuilder = new Picasso.Builder(context); 

// let's change the standard behavior before we create the Picasso instance 
// for example, let's switch out the standard downloader for the OkHttpClient 
picassoBuilder.downloader(new OkHttpDownloader(new OkHttpClient())); 
// or you can try 

(picassoBuilder.downloader( 
    new OkHttpDownloader(
     UnsafeOkHttpClient.getUnsafeOkHttpClient() 
    ) 
);) 

// Picasso.Builder creates the Picasso object to do the actual requests 
Picasso picasso = picassoBuilder.build(); 

:あなたがして、カスタムでピカソのあなたのダウンローダを回避しようとすることができます。

picasso 
    .load(linktoimage) 
    .into(imageView3); 
+1

インターネット上で浮動する「UnsafeOkHttpClient」実装はセキュリティ上の災害であり、Playストアからの禁止を受けることに注意してください。すべてのSSL証明書を盲目的に受け入れるコードは使用しないでください。 – CommonsWare

+1

私はあなたの問題を発見するだけです。私は接続okhttpの問題を考える。あなたが問題を見つけたら、あなたの解決策を共有してください(あなたは@FontCommonsWareの解決策を試すことができます)。ありがとう。 –

関連する問題