全部产品
云市场

HTTPDNS iOS、android(安卓) SDK:SDK 拿到 ip 为空的排查步骤。

更新时间:2018-01-15 19:28:27

如果首次使用 HTTPNDNS 域名解析不成功,可以根据下面的步骤来进行排查:
  • 1.遇到问题可以先通过 文档页 进行关键字搜索,或者使用 云博士 检索,一般都能命中相关的疑问。
  • 2.首先排查在控制台上是否添加了需要解析的域名,使用 HTTPDNS 解析域名请求示例时:http://203.107.1.33/{Your account ID}/d?host=www.aliyun.com(尽量使用控制台申请的 Account ID,否则解析可能为空)。
  • 3.检查网络是否能正常访问,以及请求的url是否设置了HOST请求字段。
  1. // 比如您要访问http://www.aliyun.com/,假设www.aliyun.com域名的解析结果是140.205.62.8。
  2. // 一般情况下,使用IP的方式进行访问时,需要设置HTTP请求头的HOST字段为原来的域名。
  3. String fullPath = "http://140.205.62.8/";
  4. String host = "www.aliyun.com";
  5. URL url = new URL(fullPath);
  6. HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  7. // 设置HTTP请求头HOST字段为www.aliyun.com
  8. conn.setRequestProperty("Host", host);

Android详情也可以参考:4.1 HTTP请求头HOST字段设置


  1. NSString *originalUrl = @"http://www.aliyun.com/";
  2. NSURL* url = [NSURL URLWithString:originalUrl];
  3. NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:url];
  4. // 同步接口获取IP
  5. NSString* ip = [httpdns getIpByHostAsync:url.host];
  6. if (ip) {
  7. // 通过HTTPDNS获取IP成功,进行URL替换和HOST头设置
  8. NSRange hostFirstRange = [originalUrl rangeOfString: url.host];
  9. if (NSNotFound != hostFirstRange.location) {
  10. NSString* newUrl = [originalUrl stringByReplacingCharactersInRange:hostFirstRange withString:ip];
  11. request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:newUrl]];
  12. // 设置请求HOST字段
  13. [request setValue:url.host forHTTPHeaderField:@"host"];
  14. }
  15. }

iOS详情也可以参考:4.1 HTTP请求头HOST字段设置

  • 4.查看是否调用异步请求接口,如果初次调用异步请求接口返回为空是正常的,需要延迟一段时间,再次调用才能拿到IP。

Android异步解析接口:

  1. String getIpByHostAsync(String host);
  2. String[] getIpsByHostAsync(String host);

iOS异步解析接口:

  1. - (NSString *)getIpByHostAsync:(NSString *)host;
  2. - (NSArray *)getIpsByHostAsync:(NSString *)host;
  3. - (NSString *)getIpByHostAsyncInURLFormat:(NSString *)host;
  • 5.如果还是为空,检查当前是否为调试状态,有时调试状态+ttl较短也会导致IP过期,返回IP结果为空。
  • 6.使用Demo运行查看,比对结果。

  • 若上述步骤仍未能定位问题,可以:

    • 加入钉钉群,群号:11777313。
    • 或者提交工单 ,工单请选择类目 HTTPDNS