读书人

HttpWebRequest类(WP8)的缓存有关问题

发布时间: 2014-01-22 00:03:39 作者: rapoo

HttpWebRequest类(WP8)的缓存问题,求解~
刚学WP编程不久,遇到HttpWebRequest的缓存问题,求大虾指点:

如下这个代码实现的是:点击一个button后,进行HTTP GET的操作,把获取到的信息显示到TextBlock里面。调试运行都OK,但问题是:第一次点击button时,网络抓包发现确实与192.168.1.102主机有HTTP通讯;但之后再点击button,网络抓包发现没有任何通讯,但程序还是正常运行的,包括显示出最后结果。

从上面的情况来看,我觉得HttpWebRequest是不是有一个缓存机制,以至于第二次及以后的操作都没有经过网络通讯?如果是这样的话,怎么样让HttpWebRequest不要缓存,每次都实实在在的通过网络访问去获取HTTP信息?求指点~

private void Button_Click(object sender, RoutedEventArgs e)
{

HttpWebRequest test_httprequest = (HttpWebRequest)HttpWebRequest.Create("http://192.168.1.102/System/time");
string un = "admin";
string pd = "12345";
test_httprequest.Credentials = new NetworkCredential(un, pd);
test_httprequest.BeginGetResponse(cbResponseCallback, test_httprequest);
}

private void cbResponseCallback(IAsyncResult result)
{
try
{
HttpWebRequest request = (HttpWebRequest)result.AsyncState;//获取异步操作返回的的信息
WebResponse response = request.EndGetResponse(result);//结束对 Internet 资源的异步请求
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
string contents = reader.ReadToEnd();
//通过呼叫UI Thread来返回主线程
Dispatcher.BeginInvoke(() =>
{
txtblock1.Text = contents;
});
}
}
catch (Exception e)
{
Dispatcher.BeginInvoke(() =>
{
txtblock1.Text = e.Message;
});
}
}

[解决办法]
http的url中加个随机数试试?
[解决办法]
在请求的url后面加多一个参数,值为随机。
如:原url为 string url = "http://www.xxx.com"; ->
string url = "http://www.xxx.com" + "?r=" + Guid.NewGuid().ToString();

读书人网 >Windows Mobile

热点推荐