今日、認証フォームを含むページにログインしようとしました。
Windows Phone 7 で RestSharp を使用しており、ほぼすべてを試しましたが、うまくいきませんでした。
デスクトップ コンピューターのブラウザーで、ログイン ページ ( http://myanimelist.net/login.php ) を使用して有効な資格情報を入力すると、パネル ページ ( http://myanimelist.net ) にリダイレクトされます。 /panel.php )
Windows Phone 7 (および 8) で、RestSharp を使用して自分自身を認証しようとすると、パネル ページにリダイレクトされますが、次のエラーが表示されます。
エラー: このページを表示するには、まずログインする必要があります。
実際、私は認証されておらず、パネル ページを表示する権限がありません。
私はWPFアプリケーションで同じことを試しましたが、うまくいきました。
私のWPFアプリでは、次のコードがあります:
var client = new RestSharp.RestClient();
client.BaseUrl = "http://myanimelist.net/login.php";
client.Authenticator = new SimpleAuthenticator("username", "mylogin", "password", "mypassword");
client.CookieContainer = new CookieContainer();
var request = new RestRequest(Method.POST);
var response = client.Execute(request);
プロパティ "response.Content" には、いくつかの情報を含むページと、私のログインのウェルカム メッセージが含まれます。それは私が認証されたことを意味します。
しかし...
Windows Phone 7 で次のコードを使用すると、プロパティ "response.Content" に、いくつかの情報と次のメッセージを含むページが含まれます。
エラー: このページを表示するには、まずログインする必要があります
そして、これが使用されたWP7コードです:
var client = new RestSharp.RestClient();
client.BaseUrl = "http://myanimelist.net/login.php";
client.Authenticator = new SimpleAuthenticator("username", "mylogin", "password", "mypassword");
client.CookieContainer = new CookieContainer();
var myRequest = new RestRequest(Method.POST);
client.ExecuteAsync(myRequest, response =>
{
var t = response.Content;
});
私は何か見落としてますか?WP7 の RestSharp と WPF アプリに違いはありますか?
Fiddler を使用して何が起こるかを確認しましたが、WP7 で Cookie が設定されていないことがわかります (WPF アプリでは Cookie が設定されています)。
編集:
応答を取得すると、WPF アプリと WP7 アプリで Cookie が設定されていることが Fiddler でわかります。
そのため、リクエストを行う前に WP7 アプリに Cookie を追加しようとしましたが、うまくいきました。
Fiddler で表示できる値を追加しましたが、RestSharp でこれらの値を取得する方法が見つかりません。
リクエストを実行する前に追加しようとしたものは次のとおりです。
myRequest.AddParameter("A", "theFirstValue", ParameterType.Cookie);
myRequest.AddParameter("B", "theSecondValue", ParameterType.Cookie);