HttpClient响应没有得到刷新

本文关键字:刷新 响应 HttpClient | 更新日期: 2023-09-27 18:11:59

我使用HttpClient与web服务进行发送/接收(JSON格式的响应)通信。但我在接收数据时遇到了一些问题。我调用web服务每5分钟刷新在我的windows手机使用HttpClient的内容,但响应来一次又一次相同。为了获得新的响应,我需要退出应用程序并再次调用服务。HttpClient是否需要一些刷新或清除数据处理?我是否需要实现一些其他的方法来获得新的刷新结果每次?请建议。下面是我的实现

public async Task<string> GetMyData(string urlToCall)
    {
        try
        {
            using (HttpClient httpClient = new HttpClient())
            {
                httpClient.Timeout = TimeSpan.FromMilliseconds(double.Parse(30000));
                HttpRequestMessage request = new HttpRequestMessage(System.Net.Http.HttpMethod.Get, urlToCall);
                var response = await httpClient.SendAsync(request);
                if (response.StatusCode == HttpStatusCode.OK)
                {
                    var responseString = await response.Content.ReadAsStringAsync();
                    return responseString;
                }
                else
                {
                    return string.Empty;
                }                    
            }
        }
        catch (Exception ex)
        {
            System.Diagnostics.Debug.WriteLine("Exception => RestfulWebService =>GetMyData: " + ex.Message);
            return string.Empty;
        }
    }

HttpClient响应没有得到刷新

Windows Phone(不像Windows Store Apps)有一个优化来减少对服务器的调用次数。

所以默认情况下,SendAsync的get请求(或GetAsync)在电话中实现这样一种方式,如果你再次进行相同的get请求调用,它甚至不会击中服务器,但会直接返回之前的结果它为你获取。

如果你想手动覆盖这个优化,你必须手动添加标题"IfModifiedSince"到请求并设置datetimeoffset到现在。这将使客户端每次都再次调用服务器。

下面是代码

      HttpRequestMessage request = new HttpRequestMessage(System.Net.Http.HttpMethod.Get, urlToCall);
      request.Headers.IfModifiedSince = new DateTimeOffset(DateTime.Now);
      var response = await httpClient.SendAsync(request);

请注意,在创建请求之后和将其发送到服务器之前,我在代码中间添加了一行。

希望能有所帮助。

尝试下面的代码

request.Headers.Add("If-Modified-Since", DateTime.Now.ToString());

.

DateTime d = DateTime. now . adddays (-1);string date = d. tuniversaltime ().ToString("r");client.DefaultRequestHeaders。添加(if - modified - since,日期);