Domanda

DotNetOpenAuth I campioni non sono un esempio per l'esecuzione di una chiamata in modo asincrono. Ecco la mia esecuzione. Mi piacerebbe sapere se sto facendo qualcosa di sbagliato.

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;
}

Per essere chiari, questo va bene a lavorare per me, ma l'attuazione nei campioni utilizza un paio di altre classi che non compiono alcun risultato chiaro per me; sembrano controllare che il contenuto codifica non è impostata stranamente, e verificare la risposta non è nullo, entrambi i quali mio codice sarebbe presumibilmente lancerà un'eccezione comunque. Essi non sembrano fare qualcosa di simile convalidare la risposta è arrivata dal server previsto, che sarebbe comunque improbabile nel mio scenario particolare in quanto si tratta di una richiesta HTTPS. Mi sto perdendo qualcosa facendo le cose in questo modo? Sto sicuramente guadagnando molto in termini di prestazioni!

È stato utile?

Soluzione

Quello che stai facendo sguardi totalmente bene. La chiamata ai segni PrepareAuthorizedRequest la richiesta HTTP in uscita e si è liberi di inviarlo in modo asincrono o in altro modo, dopo che senza alcun ulteriore pensiero alla OAuth-specifiche preoccupazioni.

Non sono sicuro di quello che il codice ti riferisci quando si parla "verificare la risposta non è nullo", ecc Ma nel test che ho fatto, ci sono momenti in cui Response (sia nel eccezione e caso non eccezione) può essere nullo. Non ricordo esattamente quando però.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top