Windows Phone Silverlight 请求不更新

Windows Phone Silverlight request does not update

我是 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' 始终等于旧字符串,即使在更新之后也是如此 所以这就是内容未更新的原因 但是响应如何与之前完全相同,甚至如果更新在服务器端运行良好(如果我在更新后检查 Postman,我可以看到我的城市是新城市)。如果我重新启动我的应用程序,我可以看到更新。 我还可以向您展示我的 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);
    }

感谢您的帮助!

终于找到为什么我的请求在更新后还是一样。 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);

我不知道那个缓存,所以我希望这个答案能帮助遇到同样问题的人!