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;
}