すべてのプロダクト
Search
ドキュメントセンター

HTTPDNS:HTTPDNS で解決された IP アドレスを使用して Web サイトにアクセスするための libcurl for C または C++ の使用方法

最終更新日:Feb 19, 2025

Enterprise Mobile Application Studio (EMAS) が提供する HTTPDNS は、HTTPDNS SDK を使用することで、Android、iOS、および C デバイスからのみアクセスできます。 他のデバイスでは、libcurl for C または C++ を使用して、HTTPDNS によって解決された IP アドレスを取得し、Web サイトにアクセスできます。

背景情報

HTTPDNS で解決された IP アドレスを使用して Web サイトにアクセスする場合は、次の操作を実行する必要があります。

  • リクエストで Host ヘッダーを構成する。

  • リクエストで SNI を構成する。

  • リクエストで証明書を確認する。

前提条件

libcurl for C または C++ がインストールされている。

手順

1. HTTPDNS の HTTP API を使用して、アクセスする Web サイトのドメイン名を IP アドレスに解決します。 詳細については、「ドメイン名を解決する」をご参照ください。

2. libcurl for C または C++ が提供するホストのカスタムアドレス機能を使用して、HTTPDNS によって解決された IP アドレスを介して Web サイトにアクセスします。 詳細については、「名前解決」をご参照ください。

この例では、次のドメイン名と IP アドレスを持つ Web サイト https://example.com/ にアクセスします。

  • ドメイン名: example.com

  • IP アドレス: 192.168.XX.XX

curl コマンドまたは libcurl を使用してリクエストを開始し、IP アドレスを介して Web サイトにアクセスできます。

  • curl コマンドに基づくリクエスト

$ curl --max-time 5 --resolve example.com:4XX:192.168.XX.XX https://example.com/
  • libcurl に基づくリクエスト

#include <stdio.h>
#include <curl/curl.h>

int main(void) {
    CURL *curl;
    CURLcode res;

    curl_global_init(CURL_GLOBAL_DEFAULT);

    curl = curl_easy_init();
    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
        curl_easy_setopt(curl, CURLOPT_TIMEOUT, 5);

        /* HTTPDNS によって解決されたドメイン名と IP アドレスを指定します。 */
        struct curl_slist *dns;
        dns = curl_slist_append(NULL, "example.com:4XX:192.168.XX.XX");
        curl_easy_setopt(curl, CURLOPT_RESOLVE, dns);

        /* リクエストを実行します。res はリターンコードを取得します */
        res = curl_easy_perform(curl);
        if (res != CURLE_OK) {
            fprintf(stderr, "curl_easy_perform() failed: %s\n",
                    curl_easy_strerror(res));
        }

        /* 常にクリーンアップします */
        curl_easy_cleanup(curl);
    }

    curl_global_cleanup();

    return 0;
}