2012-04-19 79 views
3

我在我的Windows Phone 7.1项目中使用RestSharp。WP7 - 防止RestSharp缓存

我的问题是RestSharp总是缓存响应数据。

例如:

在我第一次发送请求时,它会正确返回数据。经过一些删除操作后,我再次发送该请求,但回复看起来与第一次相同,没有任何变化。

如果我停止调试并按F5重新开始,它会按预期完美工作。

我也试过request.AddParameter("cache-control", "no-cache", ParameterType.HttpHeader);,没有运气。

我该如何解决这个问题?

+1

RestSharp没有任何内置缓存所以这可能是在HttpWebRequest的它建立在它之上。你有没有对API端点的控制权?你能发布更多的代码吗? – 2012-04-19 17:29:18

+2

它的黑客,但尝试像'url = originalUrl +“&nocache =”+ DateTime.Now.Ticks' – 2012-04-19 17:31:50

+0

我使用了@RicoSuter提到的解决相同问题的类似解决方案。 – earthling 2012-04-20 01:54:40

回答

3

我在Rico Suter发现了解决方案,谢谢!我将标志着这是公认的anwser

它是一种技巧,但你可以试试URL = originalUrl +“&非缓存=” + DateTime.Now.Ticks

+0

就像Rico说的那样,这是一个黑客......但是工作起来!不过,如果您尝试使用“Cache-Control”并添加“Pragma”标题,我仍然很好奇! – 2012-04-20 09:55:19

+1

我们可以强调这与RestSharp无关吗? – 2012-04-20 10:00:32

+1

是的,问题在于'HttpWebRequest'实现使用无法禁用的缓存...... – 2012-04-20 10:11:02

1

“缓存控制”标题应该做的伎俩!

我认为HTTP头是不区分大小写的,但服务器可能不同意我的观点!你应该尝试使用Cache-Control代替cache-control ...

此外,我还将与no-cache值添加Pragma头的要求(一些老服务器不使用“缓存控制”头,但他们肯定会认识到这一点)!

而且我会尝试使用Fiddler来调试通信并检查头部是否真的被发送到服务器!

3

我有同样的问题,所以只需添加页眉指定不缓存响应数据 客户端是具有基础url的RestClient,并且使用值no-cache添加默认头缓存控制。

client.AddDefaultHeader("Cache-Control", "no-cache") 
0

另一种解决方案可以设定“如果-Modified-Since的”与DateTime.Now头值:

client.AddDefaultParameter("If-Modified-Since", DateTime.Now, ParameterType.HttpHeader);