2013-08-08 6 views
0

J'appelle une méthode api web asp.net local à partir d'une application WP8, et obtenir l'exception:api web 'System.NotSupportedException' de Windows Phone 8

asyncResult.AsyncWaitHandle 'a lancé une exception de type' System.NotSupportedException '

Quelqu'un peut-il vous aider?

public void GetProducts() 
    { 
     UriBuilder fullUri = new UriBuilder(baseUri + "productapi"); 
     fullUri.Query = ""; 

     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(fullUri.Uri); 
     request.Accept = "application/json"; 
     RequestUpdateState requestState = new RequestUpdateState(); 
     requestState.AsyncRequest = request; 

     request.BeginGetResponse(new AsyncCallback(HandleProductsResponse), 
      requestState); 
    } 

    private void HandleProductsResponse(IAsyncResult asyncResult) 
    { 
     // get the state information 
     RequestUpdateState requestState = (RequestUpdateState)asyncResult.AsyncState; 
     HttpWebRequest request = (HttpWebRequest)requestState.AsyncRequest; 

     // end the async request 
     requestState.AsyncResponse = (HttpWebResponse)request.EndGetResponse(asyncResult); 

     Stream streamResult;   
     // get the stream containing the response from the async call 
     streamResult = requestState.AsyncResponse.GetResponseStream(); 
     ObservableCollection<Product> productList = new ObservableCollection<Product>(); 

    } 
+0

Probablement pas, parce que vous donnent aucune indication où l'exception est levée. Attrapez-le, appelez ToString et modifiez-le dans votre question. – Will

Répondre

0

Mon mauvais, je l'ai fait d'une manière différente de toute façon.

public async void GetProducts() 
    { 
     UriBuilder fullUri = new UriBuilder(baseUri + "productapi"); 
     fullUri.Query = ""; 

     HttpClient c = new HttpClient(); 
     c.BaseAddress = fullUri.Uri; 
     var response = await c.GetAsync(c.BaseAddress, HttpCompletionOption.ResponseContentRead); 
     if (response.IsSuccessStatusCode) 
     { 
      DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Product)); 
      String str = await response.Content.ReadAsStringAsync(); 

      dynamic[] Objects = JsonConvert.DeserializeObject<Object[]>(str); 
      Products.Clear(); 
      foreach (dynamic ob in Objects) 
      { 
       //do something 
      }    
     } 
    } 

Merci pour votre aide