个人博客

http://www.milovetingting.cn

前言

简单记录集成阿里云HTTPDNS服务的过程

什么是HTTPDNS

HTTPDNS是面向多端应用(移动端APP,PC客户端应用)的域名解析服务,具有域名防劫持、精准调度、实时解析生效的特性。

以上来自阿里云HTTPDNS文档。

接入流程

服务开通

HTTPDNS是移动研发平台提供的服务,请参考EMAS 快速入门开通服务。

  1. 开通服务后,进入控制台,点击添加产品,如图所示

  1. 完成添加产品后,点击添加应用,如图所示

  2. 添加应用完成后,点击刚才添加的应用

  3. 查看Account ID,这个id后面配置dns会用到

  4. 在域名列表中添加域名

Android SDK 接入

  1. 在项目根目录下的build.gradle文件中添加Maven仓库地址
allprojects {repositories {maven {url 'http://maven.aliyun.com/nexus/content/repositories/releases/'}}
}
  1. 在需要引入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'
  1. 引入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'
    
  2. 配置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();
    
  3. 调用请求

    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接入相关推荐

  1. 【转载】破解物联网落地困境-阿里云硬件接入最佳实践

    破解物联网落地困境-阿里云硬件接入最佳实践 <剑指物联>第五期中,阿里云IoT事业部总经理库伟曾提到物联网实施过程中的困境.比如在设备厂家层面:智能设备连接不稳定,网络安全差:在ISV层面 ...

  2. esp8266 阿里云 arduino_ESP8266接入阿里云——基于官方SDK接入阿里云串口获取云下发数据...

    作者:电子快递哥 日期:于2020年3月18日 有态度,有温度,欢迎关注电子快递哥,转载请注明出处, ESP8266接入阿里云 --之一基于官方SDK接入阿里云串口获取云下发数据 一.获取阿里云IoT ...

  3. 阿里云服务器接入云盾Web应用防火墙教程

    什么是云盾Web应用防火墙? 云盾Web应用防火墙(Web Application Firewall, 简称 WAF)基于云安全大数据能力实现,通过防御SQL注入.XSS跨站脚本.常见Web服务器插件 ...

  4. 天津阿里云代理商:大事件!全国一体化算力调度平台来了,天翼云、华为云、阿里云已接入

    6月5日,由工业和信息化部主办,中国信息通信研究院(下称"信通院")等承办的"算力创新发展高峰论坛"在京召开.会上,中国信通院联合中国电信共同发布我国首个实现多 ...

  5. 阿里云平台接入python版

    物联网基于python云平台的接入 文章目录 物联网基于python云平台的接入 1.设计目的 2.功能要求和关键问题 2.1 系统功能描述 2.2复杂工程问题分析 3.系统整体框架设计 4.模块的设 ...

  6. 海量数据大课学习笔记(12)-账号微服务-阿里云OSS接入实战-小滴课堂

    文章目录 前言 第1集 分布式文件存储业界常见解决方案介绍 第2集 阿里云OSS分布式对象存储介绍开通 第3集 权限知识 RBAC-ACL模式应用之阿里云RAM访问控制 第4集 阿里云OSS客户端SD ...

  7. 阿里云服务器ECS接入多IP_ECS绑定多个弹性公网IP搭建教程

    很多场景下我们需要单服务器多IP来完成业务需求,运营商们大多采取单独出售ip来满足客户需求,当然相对靠谱的运营商是我们的首选,下面介绍一下阿里云ECS部署多IP是如何实现的. 1.选择云服务器ECS ...

  8. 赛普拉斯PSoC6正式接入阿里云Link TEE加强物联网应用的安全设计...

    中国北京,2019年4月15日 - 全球领先的嵌入式解决方案供应商赛普拉斯半导体公司(Cypress Semiconductor Corp.)(纳斯达克代码:CY)今日宣布,旗下物联网计算和无线解决方 ...

  9. 阿里云服务器ECS接入多IP_ECS绑定多个弹性公网IP搭建

    很多场景下我们需要单服务器多IP来完成业务需求,运营商们大多采取单独出售ip来满足客户需求,当然相对靠谱的运营商是我们的首选,下面介绍一下阿里云ECS部署多IP是如何实现的. 1.选择云服务器ECS ...

最新文章

  1. TS中的感叹号和问号的用法
  2. 树与二叉树(c/c++)
  3. CVPR2016:Improving Person Re-identification via Pose-aware Multi-shot Matching
  4. 计算机社团活动教学计划,社团活动教学计划(计算机平面设计).doc
  5. 计算机应用基础简单实操,浅谈《计算机应用基础》实操课的教学管理
  6. 树和二叉树的基本概念(二级)
  7. H264帧的分析sps pps
  8. 当前以太坊上DeFi协议总锁仓量为374.7亿美元
  9. 批量生产insert 或者update语句
  10. 工具的使用——vs2013
  11. EasyUI-在iframe里获取现阶段选中的tab的标题
  12. java file 权限_Java文件权限(设置)
  13. visio安装报错 1:1935 2:{XXXXXXXX...
  14. Android知识梳理:点击事件分发机制
  15. 两台计算机传输文件速度,两台电脑间如何快速传输几百个G的文件?使用这2个方法,方便极了...
  16. 图像修复(拖影、失焦、雨雾、模糊)deblurGAN 论文解读
  17. 模拟人生Java修改_模拟人生4 常用修改秘籍作弊码一览 修改秘籍怎么用
  18. HtmlParser初步研究
  19. Vbox虚拟机无法启动错误Mark
  20. Linux下四款Web服务器压力测试工具…

热门文章

  1. poj 2955 区间dp
  2. 小象学院之python实例
  3. 实验吧CTF逆向题1000writeup
  4. (建议)房价与个人所得税起征点计算公式
  5. html5黑板源码,HTML5/Canvas黑板涂鸦动画
  6. 智能座舱域控制器功能自动化测试方案
  7. Textstudio 应用程序无法正常启动0xc000007b
  8. 服务器里怎么给网站刷排名,细数刷排名软件的原理与实现过程
  9. Css图片批量下载小工具--saveimg1.5
  10. 深度学习训练时GPU利用率忽高忽低问题