2012-06-22 3 views
0

Я сейчас только изучаю разработку Windows Phone 7, я использую C#, так как это язык, с которым я наиболее знаком.Windows Phone 7 Потребность Webservice Данные JSON

На данный момент я хотел бы создать следующий поток: введите текст в текстовое поле и нажмите кнопку -> я покажу ему окно с сообщением «Подождите» и отправьте текст текстового поля в WebService (возможно, через HTTPS), когда получен ответ WebService, я покажу ему еще один экран, основываясь на данных ответа.

Этот WebService извлекает только данные JSON, поэтому мне нужно разобрать данные JSON.

Я думаю, что я уже могу отправить данные и получить ответ от сервера, однако я не знаю, как показать это окно загрузки, спрячьте его при допинге и запустите новый экран (блокируя доступ к этому первому).

На кнопку мыши:

 HttpWebRequest wr = (HttpWebRequest)System.Net.WebRequest.Create("http://example.com/"); 
     wr.Method = "POST"; 
     wr.ContentType = "application/x-www-form-urlencoded"; 

     wr.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), wr); 

метод GetRequestStreamCallback:

void GetRequestStreamCallback(IAsyncResult asynchronousResult) 
    { 
     HttpWebRequest wr = (HttpWebRequest)asynchronousResult.AsyncState; 
     Stream postStream = wr.EndGetRequestStream(asynchronousResult);; 
     byte[] byteArray = Encoding.UTF8.GetBytes("key=" + someText.Text); 
     postStream.Write(byteArray, 0, byteArray.Length); 
     postStream.Close(); 

     wr.BeginGetResponse(new AsyncCallback(GetResponseCallback), wr); 
    } 

GetResponseCallback метод:

void GetResponseCallback(IAsyncResult asynchronousResult) 
    { 
     try 
     { 
      HttpWebRequest wr = (HttpWebRequest)asynchronousResult.AsyncState; 
      HttpWebResponse response = (HttpWebResponse)wr.EndGetResponse(asynchronousResult); 
      Stream streamResponse = response.GetResponseStream(); 
      StreamReader streamReader = new StreamReader(streamResponse); 
      MessageBox.Show(streamReader.ReadToEnd()); // ??? 
      streamReader.Close(); 
      streamResponse.Close(); 
      response.Close(); 
     } 
     catch (WebException e) 
     { 
      // Does nothing 
     } 
    } 

ответ

1

Какой бы метод вы используете для progress indication, включите его прямо перед вызовом услуга, myProgressIndicator.Show = true;, затем в c allback и, когда это делается с любой другой обработкой, выключите его, myProgressIndicator.Show = false;. Не забудьте также отключить его в catch для обработки исключений.

Coding4Fun имеет оверлей прогресса.