HTTPDNS目前支持Android、iOS、Harmony、C端的SDK接入。其他类型终端,可通过C/C++语言curl库实现IP直连的方式,使用HTTPDNS服务。
背景知识
使用IP直连访问HTTPDNS时,主要处理以下关键点:
- HTTP Host头设置。 
- HTTPS SNI设置。 
- HTTPS 证书校验处理。 
前提条件
使用curl库。
操作步骤
1、通过HTTP API方式解析IP,具体操作请参见 单个域名解析。
2、使用C/C++ curl库的Custom addresses for hosts功能,进行IP直连请求,具体内容请参见:libcurl库文档。
应用示例
假设业务环境如下:
- 访问业务网站:https://example.com/ 
- 域名:example.com 
- IP地址:93.184.XXX.XX 
IP直连请求如下:
- 基于curl命令行 
$ curl --max-time 5 --resolve example.com:443:93.184.XXX.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:443:93.184.XXX.XX");
        curl_easy_setopt(curl, CURLOPT_RESOLVE, dns);
        /* Perform the request, res will get the return code */
        res = curl_easy_perform(curl);
        if (res != CURLE_OK) {
            fprintf(stderr, "curl_easy_perform() failed: %s\n",
                    curl_easy_strerror(res));
        }
        /* always cleanup */
        curl_easy_cleanup(curl);
    }
    curl_global_cleanup();
    return 0;
}该文章对您有帮助吗?