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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top