序文
HttpWebRequest は、HTTP リクエストの送受信によく使用されるクラスです。C# で HttpWebRequest を使用すると、GET および POST リクエストの送信、Cookie の処理、リクエスト ヘッダーの設定、パラメーターの追加など、さまざまな機能を実装できます。この記事では、HttpWebRequest の使用法を詳しく紹介し、一般的な例をいくつか示します。
1. GETリクエストを送信する
HttpWebRequest を使用した GET リクエストの送信は、ターゲット URL を指定するだけで簡単です。以下は GET リクエストを送信するサンプルコードです。
using System;
using System.IO;
using System.Net;
class Program
{
static void Main()
{
string url = "https://www.example.com/api/data";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader streamReader = new StreamReader(response.GetResponseStream()))
{
string responseData = streamReader.ReadToEnd();
Console.WriteLine(responseData);
}
}
}
上記のコードでは、まずメソッドを通じてインスタンスWebRequest.Create
を作成し、ターゲット URL を指定します。HttpWebRequest
次に、リクエスト メソッドを GET に設定し、GetResponse
そのメソッドを通じてリクエストを送信し、レスポンスを取得します。最後に、StreamReader
オブジェクトを通じて応答データが読み取られます。
2.POSTリクエストを送信する
POST リクエストの送信は GET リクエストの送信と似ており、リクエスト メソッドを POST に設定し、リクエスト本文にデータを設定するだけです。POST リクエストを送信するサンプル コードを次に示します。
using System;
using System.IO;
using System.Net;
using System.Text;
class Program
{
static void Main()
{
string url = "https://www.example.com/api/data";
string requestData = "param1=value1¶m2=value2";
byte[] byteData = Encoding.UTF8.GetBytes(requestData);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteData.Length;
using (Stream requestStream = request.GetRequestStream())
{
requestStream.Write(byteData, 0, byteData.Length);
}
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader streamReader = new StreamReader(response.GetResponseStream()))
{
string responseData = streamReader.ReadToEnd();
Console.WriteLine(responseData);
}
}
}
上記のコードでは、まずリクエストボディのデータをバイト配列に変換し、リクエストメソッドをPOSTに設定します。次に、Content-Type
ヘッダーを に設定しapplication/x-www-form-urlencoded
、リクエストボディの長さを設定します。次に、GetRequestStream
メソッドを通じてリクエスト ストリームを取得し、リクエスト データをリクエスト ストリームに書き込みます。リクエストを送信して応答を取得するプロセスは、GET リクエストを送信する場合と同じです。
3. リクエストヘッダーを設定し、Cookie を処理する
HttpWebRequest は、リクエスト ヘッダーを設定し、Cookie を処理するためのいくつかのメソッドとプロパティも提供します。以下は、リクエスト ヘッダーを設定し、Cookie を処理するためのサンプル コードです。
using System;
using System.IO;
using System.Net;
class Program
{
static void Main()
{
string url = "https://www.example.com/api/data";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
// 设置请求头
request.Headers["Authorization"] = "Bearer xxxxxxx";
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36";
// 处理Cookie
request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(new Uri(url), new Cookie("cookie1", "value1"));
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader streamReader = new StreamReader(response.GetResponseStream()))
{
string responseData = streamReader.ReadToEnd();
Console.WriteLine(responseData);
}
}
}
上記のコードでは、request.Headers
属性を使用してリクエスト ヘッダーのキーと値のペアを設定できます。UserAgent
リクエストのブラウザ ID は、属性を設定することで偽装できます。CookieContainer
オブジェクトを作成し、 Add
Cookie を追加するメソッドを使用して、Cookie を処理します。
4. パラメータを追加して応答を処理する
HttpWebRequest を使用してリクエストを送信する場合、いくつかのパラメーターを追加し、応答を受信した後に応答を処理する必要がある場合があります。パラメーターを追加して応答を処理するサンプル コードを次に示します。
using System;
using System.IO;
using System.Net;
using System.Text;
class Program
{
static void Main()
{
string url = "https://www.example.com/api/data";
string requestData = "param1=value1¶m2=value2";
byte[] byteData = Encoding.UTF8.GetBytes(requestData);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteData.Length;
using (Stream requestStream = request.GetRequestStream())
{
requestStream.Write(byteData, 0, byteData.Length);
}
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
// 处理响应
HttpStatusCode statusCode = response.StatusCode;
string statusDescription = response.StatusDescription;
using (StreamReader streamReader = new StreamReader(response.GetResponseStream()))
{
string responseData = streamReader.ReadToEnd();
Console.WriteLine(responseData);
}
}
}
上記のコードでは、POST リクエストの送信時にいくつかのパラメーターが追加され、レスポンスのステータス コード、ステータスの説明、応答データが取得されます。
結論は
C# で HttpWebRequest を使用すると、HTTP リクエストを簡単に送受信し、さまざまな機能を実装できます。この記事では、GET および POST リクエストの送信、Cookie の処理、リクエスト ヘッダーの設定、パラメータの追加など、HttpWebRequest の使用方法を紹介します。必要に応じて柔軟に使用して、より強力な HTTP リクエスト機能を実現できます。この記事がお役に立てば幸いです!