📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
細 文字列「__FORCETOC__」を「{{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This pag… |
|||
| (同じ利用者による、間の6版が非表示) | |||
| 1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
HTTP (Hypertext Transfer Protocol) は、Web上でデータを転送するためのプロトコルである。<br> | |||
クライアントサーバモデルに基づいており、テキストベースのリクエストレスポンス方式である。<br> | |||
<br> | |||
HTTPの主な特徴を、以下に示す。<br> | |||
* ステートレス | |||
*: 各リクエストは独立して処理される。 | |||
* メソッド | |||
*: GET、POST、PUT、DELETE等がある。 | |||
* ヘッダ | |||
*: リクエストとレスポンスに関する追加情報を含む。 | |||
* ステータスコード | |||
*: サーバからの応答状態を示す。 | |||
*: 例: 200 OK、 404 Not Found | |||
<br> | |||
C++でHTTP通信を実装する場合は、一般的には、libcurlライブラリやBoost.Beastライブラリ等を使用することが多い。<br> | |||
<br><br> | <br><br> | ||
== cURLライブラリ == | == cURLライブラリ == | ||
==== cURLライブラリとは ==== | |||
その他の様々な通信方法を知りたい場合は、[https://curl.se/libcurl/c/example.html cURLの公式Webサイト]からサンプルコードを閲覧することができる。<br> | |||
<br> | |||
==== cURLライブラリのインストール ==== | |||
===== パッケージ管理システムからインストール ===== | |||
# RHEL | |||
sudo dnf install libcurl-devel | |||
# SUSE | |||
sudo zypper install libcurl-devel | |||
<br> | |||
===== ソースコードからインストール ===== | |||
もし、別途インストールする必要がある場合、ソースコードからcurlをインストールする。<br> | |||
<br> | |||
curlのビルドに必要なライブラリをインストールする。<br> | |||
# SUSE | |||
sudo zypper install make cmake gcc perl libopenssl-devel libopenssl-1_1-devel libzstd-devel c-ares-devel libpsl-devel \ | |||
libssh-devel # オプション : libSSHライブラリを使用する場合 | |||
libssh2-devel # オプション : libSSH2ライブラリを使用する場合 | |||
libgnutls-devel # オプション : GNU TLSライブラリを使用する場合 | |||
mbedtls-devel # オプション : Mbed TLSライブラリを使用する場合 | |||
libnghttp2-devel # オプション : NGHTTPライブラリを使用する場合 | |||
libheimdal-devel # オプション : GSSを使用する場合 | |||
<br> | |||
[https://curl.se/download.html curlの公式Webサイト]、または、[https://github.com/curl/curl curlのGithub]にアクセスして、ソースコードをダウンロードする。<br> | |||
ダウンロードしたファイルを解凍する。<br> | |||
tar xf curl-<バージョン>.tar.xz | |||
cd curl-<バージョン> | |||
<br> | |||
curlをビルドおよびインストールする。<br> | |||
mkdir build && cd build | |||
# Configureスクリプトを使用する場合 | |||
../configure --prefix=<curlのインストールディレクトリ> \ | |||
--with-openssl \ | |||
--with-gnutls # オプション : GNUTLSを使用する場合 | |||
--with-wolfssl # オプション : WolfSSLを使用する場合 | |||
# CMakeを使用する場合 | |||
cmake .. -DCMAKE_BUILD_TYPE=Release \ | |||
-DCMAKE_INSTALL_PREFIX=<CURLのインストールディレクトリ> \ | |||
-DENABLE_ARES=ON \ # C Aresを有効にする場合 | |||
-DCURL_USE_GNUTLS=ON \ # GNU TLSを有効にする場合 | |||
-DCURL_USE_MBEDTLS=ON \ # Mbed TLSを有効にする場合 | |||
-DCURL_USE_WOLFSSL=ON \ # Wolf SSLを有効にする場合 | |||
-DUSE_NGHTTP2=ON \ # NG Httpを有効にする場合 | |||
-DCURL_USE_GSSAPI=ON # GSS APIを有効にする場合 | |||
make -j $(nproc) | |||
make install | |||
<br> | |||
==== HTTPヘッダの取得例 ==== | ==== HTTPヘッダの取得例 ==== | ||
以下の例では、cURLライブラリを使用してHTTPリクエストを行い、HTTPヘッダのみを取得している。<br> | 以下の例では、cURLライブラリを使用してHTTPリクエストを行い、HTTPヘッダのみを取得している。<br> | ||
もし、ステータスコードが200以外の場合は、エラーメッセージを出力している。<br> | |||
<br> | |||
サンプルコードでは、以下に示すような手順を行っている。<br> | サンプルコードでは、以下に示すような手順を行っている。<br> | ||
<br> | <br> | ||
| 61行目: | 128行目: | ||
else { | else { | ||
// ステータスコードを取得 | // ステータスコードを取得 | ||
long response_code = 0L; | |||
res = curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response_code); | res = curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response_code); | ||
if (response_code | if (res == CURLE_OK) { | ||
std::cerr << "Error: | if (response_code == 200) { | ||
std::cout << "Response code: " << response_code << std::endl; | |||
} | |||
else { | |||
std::cerr << "Error: Response code is " << response_code << std::endl; | |||
} | |||
} | |||
else { | |||
std::cerr << "curl_easy_getinfo() failed: " << curl_easy_strerror(res) << std::endl; | |||
} | } | ||
} | } | ||
| 75行目: | 151行目: | ||
<br><br> | <br><br> | ||
{{#seo: | |||
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki | |||
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 | |||
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux | |||
|image=/resources/assets/MochiuLogo_Single_Blue.png | |||
}} | |||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:C++]] | [[カテゴリ:C++]] | ||