0

http 要求を実行する必要がある Windows Phone アプリケーションを作成しています。このリクエストは、URL をリクエストすると常に変化するランダムな値を返します。

ボタンをクリックすると、必要なランダム値を受け取るアプリがありますが、もう一度ボタンをクリックすると、同じランダム値を受け取ります!! サーバー側にブレークポイントを設定すると、一度だけ到達します。ボタンを10回クリックすると、初めてブレークポイントに到達します!! ボタンをクリックするたびに、新しいランダム値が必要です!

私のサーバーでは、このセッションでいくつかのオブジェクトを定義しておく必要があるため、CookieContainer を使用する必要があります。CookieContainer を使用しないとセッションを維持できないため、2 番目のリクエストを呼び出したときにオブジェクトがありません。

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 に答える