Windows Phone Silverlight请求不会更新

时间:2015-08-21 11:39:56

标签: api silverlight windows-phone httpwebrequest updates

我是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);
    }

感谢您的帮助!

1 个答案:

答案 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);

我不知道该缓存,所以我希望这个答案可以帮助有同样问题的人!