日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

域名解析

本文介紹HarmonyOS SDK的域名解析接口。

獲取HTTPDNS實例

獲取實例之前,需要先完成HTTPDNS的基礎配置。 要解析域名,需要通過HTTPDNS實例來完成域名的解析。代碼如下:

import { httpdns, HttpDnsError } from '@aliyun/httpdns';

const ACCOUNT_ID = '這里需要替換為阿里云HTTPDNS控制臺的Account ID';

// ************* 獲取HTTPDNS實例 begin *************
httpdns.getService(ACCOUNT_ID).then((service) => {
// ************* 獲取HTTPDNS實例 end *************
  // 根據需要調用service的方法
}).catch((e: HttpDnsError) => {
  console.error(`獲取HTTPDNS實例失敗 ${e.code} ${e.message}`);
});

域名解析

獲取HTTPDNS實例之后,即可調用相關方法,解析域名,常用的方法是getHttpDnsResultAsync方法,示例如下:

import { httpdns, HttpDnsError, HttpDnsResult, IpType } from '@aliyun/httpdns';

const ACCOUNT_ID = '這里需要替換為阿里云HTTPDNS控制臺的Account ID';

const HOST = 'www.aliyun.com';

httpdns.getService(ACCOUNT_ID).then((service) => {
  // ************* 域名解析 begin *************
  return service.getHttpDnsResultAsync(HOST, IpType.Auto);
  // ************* 域名解析 end *************
}).then((result: HttpDnsResult) => {
  console.log(`解析的域名 ${result.host}`);
  console.log(`解析的ipv4地址 ${result.ipv4s?.join(',')}`);
  console.log(`解析的ipv6地址 ${result.ipv6s?.join(',')}`);
}).catch((e: HttpDnsError) => {
  console.error(`失敗 ${e.code} ${e.message}`);
});

getHttpDnsResultAsync是基于Promise實現的異步方法,接收兩個參數:

  • host:待解析的域名

  • type:期望解析的IP類型,有四種情況

    • IpType.V4:需要解析IPv4類型的地址

    • IpType.V6:需要解析IPv6類型的地址

    • IpType.Both:需要解析IPv4和IPv6類型的地址

    • IpType.Auto:根據設備當前的網絡棧情況判斷,如果僅支持IPv4,則解析IPv4類型地址;如果僅支持IPv6,或者都支持,則解析IPv4和IPv6類型的地址

getHttpDnsResultAsync的返回值是一個對象,有三個主要參數:

  • host:解析的域名

  • ipv4s:解析的IPv4地址數組,如果沒有結果會是undefined

  • ipv6s:解析的IPv6地址數組,如果沒有結果會是undefined

HTTPDNS實例會把每次的解析結果緩存到內存,在TTL有效期內,不會重復向HTTPDNS服務請求解析域名。

在默認配置下,允許使用過期IP,在經過TTL有效期后,會先返回之前緩存解析結果,并向HTTPDNS服務請求解析,用新的解析結果更新內存緩存。

同步解析

HTTPDNS實例還有同步解析接口getHttpDnsResultSyncNonBlocking,示例如下:

import { httpdns, HttpDnsError, HttpDnsResult, IpType } from '@aliyun/httpdns';

const ACCOUNT_ID = '這里需要替換為阿里云HTTPDNS控制臺的Account ID';

const HOST = 'www.aliyun.com';

httpdns.getService(ACCOUNT_ID).then((service) => {
  // ************* 同步域名解析 begin *************
  const result = service.getHttpDnsResultSyncNonBlocking(HOST, IpType.Auto);
  // ************* 同步域名解析 end *************
  console.log(`解析的域名 ${result.host}`);
  console.log(`解析的ipv4地址 ${result.ipv4s?.join(',')}`);
  console.log(`解析的ipv6地址 ${result.ipv6s?.join(',')}`);
}).catch((e: HttpDnsError) => {
  console.error(`失敗 ${e.code} ${e.message}`);
});

getHttpDnsResultSyncNonBlocking是同步方法,參數和返回值與getHttpDnsResultAsync一樣。

與getHttpDnsResultAsync不同的是,如果當前還沒有緩存的解析結果,或者不允許使用過期IP而解析結果又過期了,則會先同步返回空結果,之后再向HTTPDNS服務請求解析,用新的解析結果更新內存緩存。

基于HarmonyOS單線程的設計,推薦使用getHttpDnsResultAsync方法。

預解析

HTTPDNS是通過HTTP協議向服務請求解析域名,第一次解析時沒有緩存,會發起網絡請求,占用一定的時間,所以為了提高網絡請求的速度,可以進行提前批量解析,將主要的域名提前解析,減少真正網絡請求時的時間消耗。批量解析的示例代碼如下:

import { httpdns, HttpDnsError, IpType } from '@aliyun/httpdns';

const ACCOUNT_ID = '這里需要替換為阿里云HTTPDNS控制臺的Account ID';

httpdns.getService(ACCOUNT_ID).then((service) => {
  // ************* 預解析 begin *************
  return service.resolveHosts(['www.aaa.com', 'www.bbb.com', 'www.ccc.com'], IpType.Auto);
  // ************* 預解析 end *************
}).catch((e: HttpDnsError) => {
  console.error(`失敗 ${e.code} ${e.message}`);
});

resolveHosts是異步方法,參數有兩個:

  • hosts:要進行預解析的域名列表

  • type:期望解析的IP類型,和getHttpDnsResultAsync的type參數定義一樣

預解析之后,HTTPDNS實例就會持有解析結果的內存緩存,方便后續網絡請求時快速獲取。