📢 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…
 
(同じ利用者による、間の5版が非表示)
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>


6行目: 20行目:
==== cURLライブラリとは ====
==== cURLライブラリとは ====
その他の様々な通信方法を知りたい場合は、[https://curl.se/libcurl/c/example.html cURLの公式Webサイト]からサンプルコードを閲覧することができる。<br>
その他の様々な通信方法を知りたい場合は、[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>
<br>
==== HTTPヘッダの取得例 ====
==== HTTPヘッダの取得例 ====
以下の例では、cURLライブラリを使用してHTTPリクエストを行い、HTTPヘッダのみを取得している。<br>
以下の例では、cURLライブラリを使用してHTTPリクエストを行い、HTTPヘッダのみを取得している。<br>
もし、ステータスコードが200以外の場合は、エラーメッセージを出力している。<br>
<br>
サンプルコードでは、以下に示すような手順を行っている。<br>
サンプルコードでは、以下に示すような手順を行っている。<br>
<br>
<br>
64行目: 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 != 200) {
       if (res == CURLE_OK) {
           std::cerr << "Error: HTTP status code " << response_code << std::endl;
          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;
       }
       }
     }
     }
78行目: 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++]]