DotNetOpenAuthサンプルには、呼び出しを非同期で実行するための例は含まれていません。これが私の実装です。何か間違ったことをしているのか知りたいのですが。
public static IAsyncResult BeginGetFromGoogle(string accessToken)
{
var oauthConsumer = new WebConsumer(ServiceDescription, TokenManager);
var request = oauthConsumer.PrepareAuthorizedRequest(googleEndpoint, accessToken, OAuthOpenIdHelper.MakeParameters("key", googleApiKey));
return request.BeginGetResponse(new AsyncCallback(endGetFromGoogle), new GetFromGoogleContext { Request = request });
}
protected static void endGetFromGoogle(IAsyncResult result)
{
var context = (GetFromGoogleContext)result.AsyncState;
WebResponse response = context.Request.EndResponse(result);
string body = new StreamReader(response.GetResponseStream()).ReadToEnd();
var serializer = new JavaScriptSerializer();
// serializer.Deserialize<something>(); // do something with the data
}
protected class GetFromGoogleContext
{
public HttpWebRequest Request;
}
明確にするために、これは私にとっては問題なく機能していますが、サンプルの実装では、明確な結果を達成しないクラスがさらにいくつか使用されています。彼らは、コンテンツエンコーディングが奇妙に設定されていないことを確認し、応答がnullでないことを確認しているように見えます。どちらも、私のコードはおそらくとにかく例外をスローします。意図したサーバーからの応答を検証するようなことは何もしていないようです。これは、HTTPSリクエストであるため、私の特定のシナリオではとにかくありそうにありません。私はこのように物事を行うことによって何かを逃していますか?私は確かにパフォーマンスの面で多くを獲得しています!