Monotouch - iphone HttpWebRequest关闭缓存?

时间:2011-02-13 11:10:02

标签: iphone caching mono httpwebrequest xamarin.ios

我正在使用monotouch创建一个iphone申请者​​,该申请人调用了一个返回JSON的不确定页面。

奇怪的是这个...但是当我使用HttpWebRequest时,我收到的输出是从先前的请求缓存的。

我使用秒表计时,我必须等待两分钟才能获得新版本的页面,直到此时我每次调用HttpWebRequest时都会获得缓存的输出。< / p>

即使我杀了应用程序并重新加载它,两分钟窗口的输出仍然相同。

在模拟器和手机上都会发生这种情况。

我刚刚尝试添加缓存策略而且没有任何乐趣 - 我仍然会将所有响应缓存2分钟。

继承了我最近的代码:

Uri address = new Uri(url);
HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest;

System.Net.Cache.RequestCachePolicy c = new System.Net.Cache.RequestCachePolicy();
c.Level = RequestCacheLevel.NoCacheNoStore;
request.CachePolicy  = c;
request.Timeout = Settings.RequestTimeout;
HttpWebResponse response = request.GetResponse();

任何人都有任何想法?

3 个答案:

答案 0 :(得分:1)

仅仅是一个FYI,但Mono的HttpWebRequest实现不会进行任何缓存(还)。它可以在将来实施,但从2.10.3开始它不会。

答案 1 :(得分:0)

您是否尝试过将该请求发送到其他地址?可以将响应服务器端缓存两分钟吗?

答案 2 :(得分:0)

您可以尝试使用iOS相关的对象和方法。在MonoTouch中使用NSUrlCache时,看到缓存肯定是实现的,您可以使用正确的NSUrlRequestCachePolicy枚举绕过它。当我想避免碰到缓存时,我就是这样做的:

NSUrl url = new NSUrl (url);
NSUrlRequest request = new NSUrlRequest (url, 
                                 NSUrlRequestCachePolicy.ReloadIgnoringCacheData, 
                                 0.0);

//set a delegate to handle the request callback, subclass this yourself
_webView.Delegate = new UIWebViewDelegate();
_webView.LoadRequest (request);

希望这有帮助。