ポータブルクラスライブラリ内に、特定のURLにデータを投稿する次のメソッドがあります。この方法はうまく機能します。ただし、より積極的なタイムアウトを指定したいと思います(デフォルトは100秒です)。
Portable Class LibraryのHttpWebRequestクラスにTimeoutプロパティがないことを考えると、数秒以上かかる場合に呼び出しが破棄されるようにするにはどうすればよいですか?
public async Task<HttpResponse> PostAsync(Uri uri, string data)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
using (Stream requestStream = await request.GetRequestStreamAsync())
{
byte[] postBytes = Encoding.UTF8.GetBytes(data);
requestStream.Write(postBytes, 0, postBytes.Length);
}
HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync();
return new HttpResponse(response.StatusCode, await new StreamReader(response.GetResponseStream()).ReadToEndAsync());
}