0

我正在编写一个需要执行 http 请求的 windows phone 应用程序。这个请求返回给我一个随机值,当我请求它的 url 时它总是会改变。

所以我有一个带有按钮的应用程序,当我点击它时,我会收到我想要的随机值,但是,如果我再次点击按钮,我会收到相同的随机值!我在服务器端放了一个断点,只到达一次,如果单击按钮10次,它将第一次到达断点!每当我单击按钮时,我都需要一个新的随机值!

我需要使用 CookieContainer 因为在我的服务器上我需要保留在此会话中定义的一些对象。如果我不使用 CookieContainer 我无法保持会话,所以当我调用第二个请求时,我那里没有对象。

private async Task<string> requestURLData(HttpWebRequest request)
{

HttpWebResponse response = (HttpWebResponse) await Task<WebResponse>.Factory.FromAsync(request.BeginGetResponse, request.EndGetResponse, request);

var responseStream = response.GetResponseStream();
var sr = new StreamReader(responseStream);

string received = await sr.ReadToEndAsync();

return received;
}


private async Task<string> requestUrl(string url, CookieContainer cookie)
{
var request = WebRequest.Create(new Uri(url)) as HttpWebRequest;
request.CookieContainer = cookie;

return await this.requestURLData(request);

}


private async Button_Click(object sender, RoutedEventArgs e)
{

CookieContainer cookie = new CookieContainer();
var result = await this.requestUrl(this.urlBase + "getRandomNum", cookie);

result = await this.requestUrl(this.urlBase + "getAnotherValue", cookie);

}
4

1 回答 1

0

您遇到了响应缓存 - 在您的服务器忽略的 url 末尾附加一个随机字符串,以保证您不会命中缓存:

Random _rand = new Random();

private async Button_Click(object sender, RoutedEventArgs e)
{

   CookieContainer cookie = new CookieContainer();
   var result = await this.requestUrl(this.urlBase + "getRandomNum&rubbish=" + _rand.Next(), cookie);
   ...
}
于 2013-06-20T22:23:40.937 回答