problème d'authentification possible? Chargement d'un JSON via WebClient dans Silverlight 4
-
11-09-2019 - |
Question
Je joue avec Silverlight 4, et moi quand mes chargement de la page, j'appelle
beginGet("my/people/", new OpenReadCompletedEventHandler(continueLoadStamData));
que j'ai défini comme
private void beginGet(string endpoint, OpenReadCompletedEventHandler callback)
{
WebClient wc = new WebClient();
wc.Credentials = new NetworkCredential(username, password);
wc.OpenReadCompleted += callback;
wc.OpenReadAsync(new Uri(baseURL + endpoint));
}
et continueLoadStamData ()
void continueLoadStamData(object sender, OpenReadCompletedEventArgs e)
{
JsonObject root = (JsonObject)JsonObject.Load(e.Result);
}
Mon problème est que quand j'arrive à e.Result, il jette une exception. Il est la même exception que je reçois quand j'essayé d'utiliser WebRequest req = ...; req.Credentials = new NetworkCredential(username, password)
:
{System.Reflection.TargetInvocationException: An exception occurred during the operation, making the result invalid. Check InnerException for exception details. ---> System.Net.WebException: An exception occurred during a WebClient request. ---> System.NotImplementedException: This property is not implemented by this class.
at System.Net.WebRequest.set_Credentials(ICredentials value)
at System.Net.WebClient.GetWebRequest(Uri address)
at System.Net.WebClient.OpenReadAsync(Uri address, Object userToken)
--- End of inner exception stack trace ---
--- End of inner exception stack trace ---
at System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary()
at System.Net.OpenReadCompletedEventArgs.get_Result()
at JSONSample.MainPage.continueLoadStamData(Object sender, OpenReadCompletedEventArgs e)
at System.Net.WebClient.OnOpenReadCompleted(OpenReadCompletedEventArgs e)
at System.Net.WebClient.OpenReadOperationCompleted(Object arg)}
Avez-vous une idée de ce qui se passe, comment je peux vous assurer que l'authentification de base est mis en œuvre et obtenir ma demande d'aller?
Vive
Nik
La solution
Basé sur le poste de Mark monstre ici vous manque quelques lignes de code dans votre méthode de beginGet. Il devrait être quelque chose comme:
private void beginGet(string endpoint, OpenReadCompletedEventHandler callback)
{
WebRequest.RegisterPrefix("http://", System.Net.Browser.WebRequestCreator.ClientHttp);
WebClient wc = new WebClient();
wc.Credentials = new NetworkCredential(username, password);
wc.UseDefaultCredentials = false;
wc.OpenReadCompleted += callback;
wc.OpenReadAsync(new Uri(baseURL + endpoint));
}
En outre, si vous essayez juste d'obtenir JSON du serveur, vous devriez être en mesure d'utiliser DownloadStringAsync au lieu de OpenReadAsync qui pourrait simplifier les choses.