2012-06-22 95 views
0

我現在剛學習Windows Phone 7開發,我使用C#,因爲這是我最熟悉的語言。Windows Phone 7消費Webservice JSON數據

現在,我想創建以下流程:用戶在文本字段中鍵入內容並按下按鈕 - >我向他展示「Please wait」消息框並將文本字段文本發送到WebService(也許通過HTTPS),當收到WebService響應時,我會根據響應數據向他展示另一個屏幕。

這個WebService只檢索JSON數據,所以我需要解析JSON數據。

我想我已經能夠發送數據並從服務器中檢索響應,但是,我不知道如何顯示此「加載」消息框,在dode時隱藏它,並啓動一個新屏幕(阻止訪問到第一個)。

在按鈕點擊:

 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有重疊進度。