我现在刚学习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
}
}