我是Windows Phone开发人员的新手,我必须使用Restful API与应用程序进行通信。一切正常,从API返回信息,但我尝试更新内容时出现问题。例如,我有一个配置文件,我尝试更新用户的信息(改变城市让我们说)。在服务器端,我可以看到我的更新工作正常,但当我在我的WP应用程序中回到我的个人资料时没有任何变化,城市仍然与旧的相同。这是我的代码:
public MainPage()
{
InitializeComponent();
this.ApplicationBar = this.Resources["HomeBar"] as ApplicationBar;
Requester requester = new Requester();
requester.initGetRequest("/me/", GetResponseCallback, true);
}
private void GetResponseCallback(IAsyncResult asynchronousResult)
{
try
{
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
Stream streamResponse = response.GetResponseStream();
StreamReader streamRead = new StreamReader(streamResponse);
string read = streamRead.ReadToEnd();
GlobalData.GetInstance().user = JsonConvert.DeserializeObject<MeClass>(read);
Dispatcher.BeginInvoke(() =>
{
MessageBox.Show(read);
});
//创建个人资料和内容
streamResponse.Close();
streamRead.Close();
response.Close();
}
catch (WebException webException)
{
HttpStatusCode status = ((HttpWebResponse)webException.Response).StatusCode;
Dispatcher.BeginInvoke(() =>
{
MessageBox.Show(status.ToString());
});
}
}
我发现字符串'read'总是等于旧字符串,即使在更新之后也是如此,这就是为什么内容没有更新但是响应如何与以前完全相同,即使更新有效在服务器端很好(如果我在更新后检查邮递员,我可以看到我的城市是新的城市)。如果我重新启动我的应用程序,我可以看到更新。 我也可以告诉你我的initGetRequest():
public void initGetRequest(String endPoint, Action<IAsyncResult> callback, Boolean header)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url + endPoint);
if (header == true)
request.Headers["Authorization"] = GlobalData.GetInstance().Header;
request.BeginGetResponse(new AsyncCallback(callback), request);
}
感谢您的帮助!
答案 0 :(得分:0)
我终于找到了为什么即使在更新后我的请求仍然相同。 HttpWebRequest默认使用缓存。在调用我的请求之前,我只添加了一小段代码:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url + endPoint);
if (header == true)
request.Headers["Authorization"] = GlobalData.GetInstance().Header;
request.Headers[HttpRequestHeader.IfModifiedSince] = DateTime.UtcNow.ToString();
request.BeginGetResponse(new AsyncCallback(callback), request);
我不知道该缓存,所以我希望这个答案可以帮助有同样问题的人!