dotnetopenauthおよびasync webrequest(begingetresponse)
-
10-10-2019 - |
質問
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リクエストであるため、私の特定のシナリオではとにかくありそうもないでしょう。私はこのように何かをすることによって何かを逃していますか?私は確かにパフォーマンスの面で多くを獲得しています!
解決
あなたがしていることは完全に元気に見えます。あなたの電話 PrepareAuthorizedRequest
発信HTTPリクエストに署名すると、OAuth固有の懸念をさらに考えずに、非同期またはその他の懸念を自由に送信できます。
「応答がnullではない」などに言及したときに言及しているコードはわかりませんが、私が行ったテストでは、応答がある場合があります(例外と非執行の両方でケース)はnullにすることができます。いつ正確には覚えていません。
所属していません StackOverflow