Picasaコンポーネントを使用して、URLから自分のイメージをImageView
にロードしています。問題は、ヘッダーにURLと共に認証トークンを渡して、アクセス権があることを確認する必要があることです。認証トークンを渡してイメージを読み込むPicasso Xamarin
Picassoコンポーネントを使用してURLとともに認証トークンを渡すにはどうすればよいですか?
Picasaコンポーネントを使用して、URLから自分のイメージをImageView
にロードしています。問題は、ヘッダーにURLと共に認証トークンを渡して、アクセス権があることを確認する必要があることです。認証トークンを渡してイメージを読み込むPicasso Xamarin
Picassoコンポーネントを使用してURLとともに認証トークンを渡すにはどうすればよいですか?
NuGetとXamarin ComponentストアのPicasaライブラリはsuper oldです。 1年以上も更新されていません。したがって、そこに表示されているコードと利用可能なコードとのわずかな違いがあるかもしれません。
var token = "authtoken";
var builder = new Picasso.Builder(this).Downloader(new CustomDownloader(token, this)).Build();
:
public class CustomDownloader : OkHttpDownloader
{
public CustomDownloader(IntPtr handle, JniHandleOwnership transfer)
: base(handle, transfer)
{ }
public CustomDownloader(string authtoken, Context context) : base(context)
{
Client.Interceptors().Add(new MyInterceptor(authtoken));
}
public class MyInterceptor : Java.Lang.Object, IInterceptor
{
private string _authtoken;
public MyInterceptor(string authtoken)
{
_authtoken = authtoken;
}
public Response Intercept(IInterceptorChain chain)
{
var newRequest = chain.Request().NewBuilder().AddHeader("Authentication", _authtoken).Build();
return chain.Proceed(newRequest);
}
}
}
あなたはその後、同様にこのカスタムダウンローダを追加することができます:あなたがイメージ要求にヘッダを追加する必要がある場合
あなたがピカソに渡し、独自のIDownloader
を実装することができますその後通常どおり、いつものように画像をにダウンロードできます。
builder.Load(Android.Net.Uri.Parse("https://test.com/img.jpg")).Into(imageView);
私はこれをRequestb.inに対してテストしました。Authentication
ヘッダーは正しく設定されています。
任意のヘッダーを設定できます。
コンポーネントは少し古いですが、NuGetは最新です。私はちょうどJakeの図書館の拘束を終えました。それは間もなくNuGetにアップします。 – Matthew
デフォルトでは、PicassoはOkHttp v2を使用し、Jakeのダウンローダはv3を使用します。 – Matthew
上記のコードはNuGetに対して作成されています。 – Cheesebaron
ただ、ジェイクでライブラリを結合仕上がっ:
- ジャワ:https://github.com/JakeWharton/picasso2-okhttp3-downloader
- #C:NuGetがJakeWharton.Picasso2OkHttp3Downloader
あるhttps://github.com/mattleibow/square-bindings
は、(パッケージが世界中propagteするために遅延があるかもしれない):
> Install-Package JakeWharton.Picasso2OkHttp3Downloader
これは、C#から同じように使用することができる。
using Square.OkHttp3;
using Square.Picasso;
using JakeWharton.Picasso;
// create the client
var client = new OkHttpClient.Builder()
.AddInterceptor(chain =>
{
var newRequest = chain.Request()
.NewBuilder()
.AddHeader("X-TOKEN", "VAL")
.Build();
return chain.Proceed(newRequest);
})
.Build();
// create the picasso handle
var picasso = new Picasso.Builder(context)
.Downloader(new OkHttp3Downloader(client))
.Build();
// use picasso!
picasso
.Load(url)
.Placeholder(Resource.Drawable.placeholder)
.Error(Resource.Drawable.error)
.CenterInside()
.Into(holder.image);
注:このライブラリはOkHttp v3を使用しています。何らかの理由でこれが望ましくない場合(問題を起こさない)、answer provided by Cheesebaronを使用する必要があります。
[Android Picassoライブラリ、認証ヘッダーを追加する方法は?](http://stackoverflow.com/questions/24273783/android-picasso-library-how-to-add-authentication-headers) – Nikhil
.. 。url: 'url + =("?orトークン= "+トークン") – Selvin
@indramurari私はすでにそれを通過しました。私はxamarinで何か同等のものを望んでいた –