のそれぞれにおけるクッキーの素晴らしいところモバイルプラットフォームは、アプリ全体で共有されているCookieコンテナです。 WebViewはCookieのプラットフォームを保持していないため、HTTPコールとWebViewのすべてがすべて同じ共有Cookieコンテナにアクセスできます。
しかし、リフレクションが必要であるため、一部のプラットフォームから抜け出すのは難しい場合があります。 SSOソリューションで最初にサインオンするWebページにアクセスする必要がある場合は、いずれも同じクッキーを共有しますので、これを行う必要はありません。
アンドロイド
のAndroidは、HTTPとのWebViewのための2個の別々のクッキーコンテナを持っています。それは奇妙なものです。したがって、あなたは、あなたがこの
HttpClient client = new HttpClient(new HttpClientHandler() { CookieContainer = cookieContainer });
WebViewのは、他のものを使用して行うHTTPリクエストで
using System.Net.Http;
private static CookieContainer _cookieContainer = new System.Net.CookieContainer();
private static Android.Webkit.CookieManager _cookieManager = Android.Webkit.CookieManager.Instance;
を持って、あなたが取得し、各コンテナにクッキーを設定することができます。
のiOS
この1つは簡単ですが、それらはすべて
NSHttpCookieStorage.SharedStorage.Cookies
でWinRTの
using Windows.Web.Http; //NOT: Microsoft.Net.Http
var filter = new HttpBaseProtocolFilter();
HttpClient client = new HttpClient(filter);
// Use this, while it comes from an instance, its shared across everything.
filter.CookieManager
感謝を格納しています。このプロジェクトは2歳以上で、Xamarin 1.4をターゲットにしており、Windowsプラットフォームは含まれていません。 Windows 8.1とXamarin 2.0で動作するソリューションについて知っていますか? – Simon
私たちはXamarin.Forms 2.1.0.6529を使用し、それは魅力(iosとandroid)のように機能します。プロジェクトに必要な部分だけをコピーしました。 github-linkはこの問題を解決する方法を示しています。 Windowsの場合、WinPhoneコードを見て、それを採用しようとする必要があります。 – Joehl