我現在剛學習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
}
}