HttpClient响应无法刷新

 淼淼L玖兰枢 发布于 2023-01-05 19:46

我正在使用HttpClient与Web服务进行通信以进行发送/接收(以JSON格式响应).但我在接收数据时遇到了一些问题.我每5分钟调用一次Web服务,使用HttpClient在我的Windows手机上刷新内容,但响应反复出现.为了获得新的响应,我需要退出应用程序并再次呼叫服务.HttpClient需要一些刷新或清除数据的过程吗?我是否需要实施其他一些approch来每次获得新的刷新结果?请建议.以下是我的实施

public async Task 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;
        }
    }

小智.. 7

Windows Phone(与Windows应用商店应用程序不同)具有优化功能,可减少对服务器的调用次数.

因此,默认情况下,SendAsync for Phone中的get请求(或GetAsync)是以这样的方式实现的:如果您再次进行相同的get请求调用,它甚至不会命中服务器但会直接返回为您获取的先前结果.

如果要手动覆盖此优化,则必须手动将标头"IfModifiedSince"添加到请求中,并将datetimeoffset设置为now.这将使客户端每次都再次调用服务器.

这是代码

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

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

希望能帮助到你.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有