我正在使用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();
任何人都有任何想法?
答案 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);
希望这有帮助。