Twitter APIにOAuth認証されたリクエストを送信する

この記事は以下の環境が対象です:

Twitter APIに対してOAuthの認証を要求したり認証済みのWeb リクエストを送信するクラスです。

この記事のコードはTwitter APIのドキュメントの他に以下の2つのコードを参考にさせて頂きました。

通常のWebリクエスト送信手順とほぼ変わりません。引数としてTwitter APIのURL(OAuth要求、ツイートなどで異なります)とリクエストヘッダーを受け取ります(リクエストヘッダーの生成についてはTwitterのOAuthリクエスト用ヘッダーを生成するを参照してください)。またOAuth認証要求時の証明情報やツイートの内容などが存在する場合はリクエストデータとしてストリームに書き込みます。

/// <summary>
/// リクエストをポスト
/// </summary>
private async Task<string> PostReuqest(string destUrl, string header, string requestDataString = null)
{
	string response = String.Empty;

	//APIへのリクエスト(ポスト)を作成
	HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(destUrl);
	Request.Method = "POST";
	Request.Headers["Authorization"] = header;

	//リクエストデータが存在する場合はストリームに書き込む
	if (requestDataString != null)
	{
		using (StreamWriter streamWriter = new StreamWriter(await Request.GetRequestStreamAsync()))
		{
			await streamWriter.WriteAsync(requestDataString);
		}
	}

	//リクエストを実行しレスポンスを取得
	HttpWebResponse Response = (HttpWebResponse)await Request.GetResponseAsync();
	if (Response.StatusCode == HttpStatusCode.OK)
	{
		using (StreamReader ResponseDataStream = new StreamReader(Response.GetResponseStream()))
		{
			response = await ResponseDataStream.ReadToEndAsync();
		}
	}

	return response;
}