そもそもHTTPとは
HttpとはHypertext Transfer Protocolの略で、直訳するとハイパーテキストを転送するプロトコルないしは規格となります。これでは何を言っているのかがさっぱりなので例を挙げましょう。
世界中には英語を筆頭に7000近い数の言語が存在すると言われています。しかしながら、7000近い言語をすべて習得するなんてことは到底できません。そこで、違う国の人同士で話すときには英語といった世界的に普及している言葉を使うのです。
インターネット上でも、要求をするときの書き方がいくつもあっては通信なんて到底できません。そこで、httpという規格が存在しているのです。
GET要求
GET要求はWebサーバにデータを送るように要求するものです。以下のような内容になっています。
GET https://example.com/ HTTP/1.1
Host: example.com
...
これは example.com に対してGET要求を送るというものです。その結果として以下のようなレスポンスが帰ってきます。二行目以降はメッセージヘッダといって自分の言語や環境などの追加の情報が記述されています。これによって、スマホ版とPC版のサイトどちらを送るべきか、日本語と英語どちらで送るべきかなどを判断しているわけなのです。
StatusCode : 200
StatusDescription : OK
Content : <!doctype html>
~~~webサイトのコンテンツ~~~
RawContent : HTTP/1.1 200 OK
...
StatusCodeが200,300番台だと成功してます。逆に400,500番台だとエラーが起きています。
普段私達はContentに当たる内容を見ているわけです。
これをC#で実装するとこうなります。
using System.Net.Http;
//System.Net.Http名前空間のHttpClientを使う
string uri = "https://example.com"; //uriを入力
HttpClient httpclient = new HttpClient();
HttpResponseMessage response = await httpclient.GetAsync(uri); //uriにGET要求
string responsestr = await response.Content.ReadAsStringAsync(); //レスポンスのContentをstring型として読み込む
Console.WriteLine(responsestr);
<!doctype html>
<html>
<head>
<title>Example Domain</title>
...
ここでは、responseが返答でありそのうちのContentをstring型として読み込んで出力しています。
POST要求
POST要求も同様にサーバーにデータを送るように要求するものですが、大きな違いがあります。それは、パラメータをメッセージヘッダに含ませるので、送信するデータ量に制限がないということです。
C#で記述するとこうなります。
using System.Net.Http;
//Post要求でもSystem.Net.Http名前空間のHttpClientを使う
string uri = ""; //Uriを設定
StringContent content = ""; //送信するContentを設定
HttpResponseMessage response = await httpClient.PostAsync(uri,content);
StringContent以外にも送信可能なデータの型はあります。詳しくは、HttpContent/Microsoft Learnを参照してください
参考文献
HTTP要求の詳しい内容についてはこのサイトがとてもわかり易いです。
C#でのGet,Post要求の詳細やその他のhttp要求についてはMicrosoftドキュメントを参考にしてください。
ネットワーク関係の知識に疎いのでご指摘等ございましたら、コメントにてご教授ください。