日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

阿里云HttpDns接入

發布時間:2023/12/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 阿里云HttpDns接入 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

個人博客

http://www.milovetingting.cn

前言

簡單記錄集成阿里云HTTPDNS服務的過程

什么是HTTPDNS

HTTPDNS是面向多端應用(移動端APP,PC客戶端應用)的域名解析服務,具有域名防劫持、精準調度、實時解析生效的特性。

以上來自阿里云HTTPDNS文檔。

接入流程

服務開通

HTTPDNS是移動研發平臺提供的服務,請參考EMAS 快速入門開通服務。

  • 開通服務后,進入控制臺,點擊添加產品,如圖所示
  • 完成添加產品后,點擊添加應用,如圖所示

  • 添加應用完成后,點擊剛才添加的應用

  • 查看Account ID,這個id后面配置dns會用到

  • 在域名列表中添加域名

  • Android SDK 接入

  • 在項目根目錄下的build.gradle文件中添加Maven倉庫地址
  • allprojects {repositories {maven {url 'http://maven.aliyun.com/nexus/content/repositories/releases/'}} }
  • 在需要引入HTTPDNS服務的模塊下的build.gradle中添加依賴
  • dependencies {compile ('com.aliyun.ams:alicloud-android-httpdns:1.3.3@aar') {transitive true} }

    按照以上官方文檔配置,在同步工程后,會報錯

    Could not find com.aliyun.ams:alicloud-android-utdid:1.1.5.4. Searched in the following locations:- http://maven.aliyun.com/nexus/content/repositories/releases/com/aliyun/ams/alicloud-android-utdid/1.1.5.4/alicloud-android-utdid-1.1.5.4.pom- https://dl.google.com/dl/android/maven2/com/aliyun/ams/alicloud-android-utdid/1.1.5.4/alicloud-android-utdid-1.1.5.4.pom- https://jcenter.bintray.com/com/aliyun/ams/alicloud-android-utdid/1.1.5.4/alicloud-android-utdid-1.1.5.4.pom Required by:project :app > com.aliyun.ams:alicloud-android-httpdns:1.3.3 > com.aliyun.ams:alicloud-android-beacon:1.0.4.3

    修改如下

    implementation('com.aliyun.ams:alicloud-android-httpdns:1.3.3@aar') {transitive trueexclude group: 'com.aliyun.ams', module: 'alicloud-android-utdid' } implementation 'com.aliyun.ams:alicloud-android-utdid:1.1.5.3'
  • 引入Retrofit及gson

    增加依賴

    implementation 'com.squareup.retrofit2:retrofit:2.3.0' implementation 'com.squareup.retrofit2:converter-gson:2.3.0' implementation 'com.google.code.gson:gson:2.8.6'
  • 配置DNS

    新建一個類,繼承Dns

    public class AliDns implements Dns {private HttpDnsService httpDns;public AliDns(Context context) {//傳入account_id,account_id為HTTPDNS控制臺添加應用時生成的httpDns = HttpDns.getService(context, "account_id");}@Overridepublic List<InetAddress> lookup(String hostname) throws UnknownHostException {//通過異步解析接口獲取ipString ip = httpDns.getIpByHostAsync(hostname);//Android9.0系統及以后版本,https請求無法直接訪問,方便起見,直接在AndroidManifest.xml中配置android:usesCleartextTraffic="true"if (ip != null) {//如果ip不為null,直接使用該ip進行網絡請求Log.e("AliDns", "ip:" + ip);List<InetAddress> inetAddresses = Arrays.asList(InetAddress.getAllByName(ip));return inetAddresses;}//如果返回null,走系統DNS服務解析域名return Dns.SYSTEM.lookup(hostname);} }

    設置OkHttpClient的dns

    OkHttpClient client = new OkHttpClient.Builder().dns(new AliDns(getApplicationContext())).build();
  • 調用請求

    Retrofit retrofit = new Retrofit.Builder().client(client).baseUrl("域名").addConverterFactory(GsonConverterFactory.create()).build(); Api api = retrofit.create(Api.class); Call<Bean> call = api.getBanner(); call.enqueue(new Callback<Bean>() {@Overridepublic void onResponse(Call<Bean> call, Response<Bean> response) {if (!response.isSuccessful()) {tv.setText("請求失敗,錯誤碼:" + response.code());return;}Bean bean = response.body();tv.setText(bean.toString());}@Overridepublic void onFailure(Call<Bean> call, Throwable t) {tv.setText(t.getMessage());} });
  • 源碼

    https://github.com/milovetingting/Samples

    總結

    以上是生活随笔為你收集整理的阿里云HttpDns接入的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。