Frage

Ich spiele mit Silverlight 4, und ich, wenn meine Seite geladen wird, nenne ich

beginGet("my/people/", new OpenReadCompletedEventHandler(continueLoadStamData));

, dass ich definiert als

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

und continueLoadStamData ()

void continueLoadStamData(object sender, OpenReadCompletedEventArgs e)
{
  JsonObject root = (JsonObject)JsonObject.Load(e.Result);
}

Mein Problem ist, dass, wenn ich zu e.Result bekommen, ist es eine Ausnahme auslöst. Es ist die gleiche Ausnahme, die ich erhalten, wie wenn ich versuchte, WebRequest req = ...; req.Credentials = new NetworkCredential(username, password) zu verwenden:

{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)}

Haben Sie eine Vorstellung davon, was vor sich geht, wie ich sicher, dass die Authentifizierung implementiert grundlegende machen kann und meine Anfrage hin?

Prost

Nik

War es hilfreich?

Lösung

Basierend auf Mark Monster Beitrag hier Sie fehlen einige Zeilen Code in Ihre beginGet Methode. Es sollte so etwas sein:

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

Auch wenn Sie nur versuchen, JSON vom Server zu erhalten, sollten Sie in der Lage sein DownloadStringAsync zu verwenden, anstatt OpenReadAsync die Dinge vereinfachen könnten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top