`

java调用万网域名接口

    博客分类:
  • java
阅读更多

 java调用万网域名接口

1.常量定义

public class DomainConstants {
	public static class CHARARRAY {
		public static String[] digitalArray = new String[] { "0", "1", "2",
				"3", "4", "5", "6", "7", "8", "9" };
		public static String[] letterArray = new String[] { "a", "b", "c", "d",
				"e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p",
				"q", "r", "s", "t", "u", "v", "w", "x", "y", "z" };
	}

	/**
	 * 在万网www.net.cn上目前支持的域名后缀类型
	 */
	public static class SUFFIX {
		public static String DOMAIN_COM = ".com";
		public static String DOMAIN_CN = ".cn";
		public static String DOMAIN_XYZ = ".xyz";
		public static String DOMAIN_WANG = ".wang";
		public static String DOMAIN_NET = ".net";
		public static String DOMAIN_ORG = ".org";
		public static String DOMAIN_TOP = ".top";
		public static String DOMAIN_REN = ".ren";
		public static String DOMAIN_CLUB = ".club";
		public static String DOMAIN_PUB = ".pub";
		public static String DOMAIN_ROCKS = ".rocks";
		public static String DOMAIN_BAND = ".band";
		public static String DOMAIN_MARKET = ".market";
		public static String DOMAIN_SOFTWARE = ".software";
		public static String DOMAIN_SOCIAL = ".social";
		public static String DOMAIN_LAWYER = ".lawyer";
		public static String DOMAIN_ENGINEER = ".engineer";
		public static String DOMAIN_ME = ".me";
		public static String DOMAIN_BIZ = ".biz";
		public static String DOMAIN_COMCN = ".com.cn";
		public static String DOMAIN_NETCN = ".net.cn";
		public static String DOMAIN_ORGCN = ".org.cn";
		public static String DOMAIN_GOVCN = ".gov.cn";
		public static String DOMAIN_NAME = ".name";
		public static String DOMAIN_INFO = ".info";
		public static String DOMAIN_CC = ".cc";
		public static String DOMAIN_TV = ".tv";
		public static String DOMAIN_MOBI = ".mobi";
		public static String DOMAIN_ASIA = ".asia";
		public static String DOMAIN_CO = ".co";
		public static String DOMAIN_TEL = ".tel";
		public static String DOMAIN_SO = ".so";
		public static String DOMAIN_我爱你 = ".我爱你";
		public static String DOMAIN_中国 = ".中国";
		public static String DOMAIN_公司 = ".公司";
		public static String DOMAIN_网络 = ".网络";
		public static String DOMAIN_集团 = ".集团";
	}

	/**
	 * 在万网www.net.cn上目前支持的域名查询地址
	 */
	public static class NETURL{
		//查询域名是否已经被注册
		public static String DOMAIN_CHECK = "http://panda.www.net.cn/cgi-bin/check.cgi";
		//查询域名注册者联系信息
		public static String DOMAIN_WHOIS = "http://whois.www.net.cn/whois/domain/";
	}
}

 

2.进制转换类定义,后面会用到

import java.util.HashMap;
import java.util.Map;
import java.util.Stack;
public class HexTransformatUtil {  
	/**
	 * 将十进制转换为任意进制值
	 * @param digths 转换后的进制最小位上,依次出现的字符值,比如26进制"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
	 * @param num 将被转换的十进制值
	 * @param length 转换到指定字符串后,如果不足length长度位,自动补足最小值,比如26进制"ABCDEFGHIJKLMNOPQRSTUVWXYZ"将在最前补"a"
	 * @return
	 */
    public static String hex10ToAnly(String digths, int num,int length){  
        StringBuffer str = new StringBuffer("");  
        int base = digths.trim().length();
        if(0==num){
        	str.append(digths.charAt(0));
        }else{
        	Stack<Character> s = new Stack<Character>();  
            while(num != 0){  
                s.push(digths.charAt(num%base));  
                num/=base;  
            }  
            while(!s.isEmpty()){  
                str.append(s.pop());  
            }
        }
        String prefix = "";
        String suffix = str.toString();
        if(length>suffix.length()){
        	for(int count = 0;count<length-suffix.length();count++){
        		prefix = prefix + digths.charAt(0);
        	}
        }
        return prefix + suffix;  
    }  
    
    /**
	 * 将任意进制转换为十进制值
     * @param digths 转换前的进制最小位上,依次出现的字符值,比如26进制"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
     * @param hexValue 转换前的进制字符串值
     * @return
     */
    public static int hexAnlyTo10(String digths, String hexValue){  
    	if(null==hexValue||"".equals(hexValue.trim()))  return 0;
    	int base = digths.trim().length();
    	
    	Map<String,Integer> digthMap = new HashMap<String,Integer>();
    	int count=0;
    	for(char item : digths.trim().toCharArray()){
    		digthMap.put(""+item, count);
    		count++;
    	}
    	String str = new StringBuffer(hexValue.trim()).reverse().toString();
    	int sum = 0;
    	for(int index = 0;index<str.length();index++){
    		sum = new Double(Math.pow(base, index)).intValue() * digthMap.get(""+str.charAt(index)) +sum;
    	}
    	return sum;
    }  
    
    public static void main(String[] args) {
    	//将十进制"0123456789"值55转换为26进制“ABCDEFGHIJKLMNOPQRSTUVWXYZ”对应的值,不需要格式化最后输出字符串
		System.out.println(hex10ToAnly("ABCDEFGHIJKLMNOPQRSTUVWXYZ", 55, 0));
		
		//将26进制“ABCDEFGHIJKLMNOPQRSTUVWXYZ”字符串值“CD”转换为十进制"0123456789"值55对应的值,不需要格式化最后输出字符串
		System.out.println(hexAnlyTo10("ABCDEFGHIJKLMNOPQRSTUVWXYZ", "CD" ));
	}
}  

 

3.域名检查

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.springside.modules.utils.xml.XMLElement;

public class DomainSearch {
	static DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmssSSS");
	/**
	 * 利用httpclient发送soap请求
	 * @param postUrl
	 * @param parameterList
	 * @return
	 */
	public static String doPost(String postUrl,
			List<NameValuePair> parameterList) {
		String retStr = "";
		// 创建HttpClientBuilder
		HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
		// HttpClient
		CloseableHttpClient closeableHttpClient = httpClientBuilder.build();
		RequestConfig config = RequestConfig.custom()
				.setConnectTimeout(2000)
				.setSocketTimeout(2000)
				.build();

		// 请求地址
		HttpPost httpPost = new HttpPost(postUrl);
		httpPost.setConfig(config);

		UrlEncodedFormEntity entity;
		try {
			if(null==parameterList) parameterList = new ArrayList<NameValuePair>();
			entity = new UrlEncodedFormEntity(parameterList, "UTF-8");
			httpPost.setEntity(entity);
			CloseableHttpResponse response = closeableHttpClient.execute(httpPost);
			// getEntity()
			HttpEntity httpEntity = response.getEntity();
			if (httpEntity != null) {
				// 打印响应内容
				retStr = EntityUtils.toString(httpEntity, "UTF-8");
				//System.out.println("response:" + retStr);
			}
			// 释放资源
			closeableHttpClient.close();
		} catch (Exception e) {
			System.out.println("httpclient exception:"+e.getMessage());
		}
		return retStr;
	}
	
	/**
	 * 域名是否被注册检查
	 * @param domainName 检查的域名,不包含域名后缀
	 * @param domainSuffix 域名后缀
	 */
	public static void checkDomain(String domainName, String domainSuffix) {
		String domain = domainName + domainSuffix;
		List<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair("area_domain", domain));
		params.add(new BasicNameValuePair("timeStamp", dateFormat.format(new Date())));
		String xml = doPost(DomainConstants.NETURL.DOMAIN_CHECK, params);
		XMLElement xmlElement = null;
		try {
			xmlElement = XMLElement.fromXML(xml);
		} catch (Exception e) {
			System.out.println("xml parsing exception :"+xml);
		}
		String original = xmlElement.getLeafValue("original");
		if(original!=null){
			/*if(original.split(":")[0].trim().equals("210")){
				System.out.println("【"+domain+"】  域名可以注册");
			}else if(original.split(":")[0].trim().equals("211")){
				System.out.println("【"+domain+"】域名已经注册");
			}else if(original.split(":")[0].trim().equals("212")){
				System.out.println("【"+domain+"】域名参数传输错误");
			}else if(original.split(":")[0].trim().equals("213")){
				System.out.println("【"+domain+"】域名查询超时");
			}*/
			String codeStr = original.split(":")[0].trim();
			if(codeStr.equals("210")){
				System.out.println(codeStr+"【"+domain+"】  域名可以注册  域名可以注册  域名可以注册  域名可以注册  域名可以注册  域名可以注册");
			}else {
				System.out.println(codeStr+"【"+domain+"】  域名已经注册");
			}
		}
	}

	/**
	 * 检查域名所有者
	 * @param domainName
	 * @param domainSuffix
	 */
	public static void whoisDomain(String domainName, String domainSuffix) {
		String requestUrl = DomainConstants.NETURL.DOMAIN_WHOIS + domainName + domainSuffix;
		String str = doPost(requestUrl,null);
		System.out.println("whoisDomain url:" + requestUrl+",response:"+str);
	}

	public static void main(String[] args) {
		//查询域名jd.com域名注册者信息
		whoisDomain("jd", DomainConstants.SUFFIX.DOMAIN_COM);
		
		//遍历所有四位英文小写字母的com域名(aaaa.com~zzzz.com)是否被注册
		int length = 4;
		int maxValue = new Double(Math.pow(26, length)).intValue()-1;
		int mixValue = 0;
		String digths = "abcdefghijklmnopqrstuvwxyz";
		for(int index = mixValue;index<=maxValue;index++){
			String domain = HexTransformatUtil.hex10ToAnly(digths, index, length);
			checkDomain(domain, DomainConstants.SUFFIX.DOMAIN_COM);

			//万网(www.net.cn)对于频繁调用有相应处理,大致是限制频繁调用的IP在随后几小时内不响应
			//所以这里第一不能使用多线程并发调用,第二要控制每次调用间隔时间,这里两次调用间隔为400毫秒
			try {Thread.sleep(400);} catch (InterruptedException e) {}
		}
	}
}

 

分享到:
评论

相关推荐

    浅谈java调用Restful API接口的方式

    Java调用Restful API接口是Java开发中非常重要的一部分,了解Java调用Restful API接口的方式可以帮助开发者更好地理解和使用相关技术。本文将详细介绍Java调用Restful API接口的方式,包括使用HttpURLConnection、...

    java调用Gmssl国密接口实例

    java调用Gmssl中国密接口进行对称与非对称加解密等运算,动态so库进行接口jni方式调用,采取接口形式对外暴露,方便对接系统调用相关java接口进行相关运算操作。

    java调用soap接口案例

    通过以上知识点的学习和实践,你可以掌握如何使用Java调用SOAP接口,以及如何根据具体需求进行定制。在处理天气信息这样的案例中,理解SOAP协议和相关API的使用,将使你能够轻松地与各种Web服务进行交互。

    中国万网域名主机邮箱API接口使用说明书

    首先,中国万网域名主机邮箱API接口的使用说明书详细阐述了API接口的使用方法,包括每个接口的具体用途、支持的操作以及如何调用。在域名管理方面,API接口支持域名注册、查询、修改和删除等功能。开发者可以通过...

    Java编程调用微信接口实现图文信息推送功能

    主要介绍了Java编程调用微信接口实现图文信息等推送功能,涉及java微信图文信息推送接口调用及相关文件、字符串编码转换相关操作技巧,需要的朋友可以参考下

    Java 调用wsdl例子

    Java 调用 WSDL 例子是指使用 Java 语言来调用远程的 Web 服务,该 Web 服务是通过 WSDL 文件发布的。在 WSDL 文件中,包含了该 Web 服务暴露在外面的接口信息。 WSDL 文件是 Web 服务描述语言的缩写,用于描述 Web...

    JAVA调用Python的接口

    java调用python脚本的工具类,可以通过在java项目中导入当前的jar包,可以来调用python的脚本代码来执行python。

    ddns动态解析万网域名

    标题 "ddns动态解析万网域名" 描述的是一个使用Python编写的DDNS(Dynamic Domain Name System)客户端程序,该程序能够与阿里云域名服务进行交互,实现动态IP地址的更新。通过配置文件ddns.conf,用户可以设置自己...

    JAVA利用HttpClient进行HTTPS接口调用

    总的来说,使用Java的HttpClient进行HTTPS接口调用涉及到配置SSL上下文、初始化HttpClient、创建请求对象以及处理响应。了解这些知识点对于开发安全的、能够与HTTPS服务进行通信的Java应用程序至关重要。通过实践和...

    java调用json参数的webservice

    为了使得Java客户端能够调用WebService服务,需要使用一些工具,例如JAX-WS(Java API for XML Web Services),它是Java SE的一部分,用于创建WebService客户端和服务端。 综上所述,通过Java调用带有JSON参数的...

    java代码集成sonar接口,实现sonar操作的demo

    利用java代码,调用sonar接口,实现在sonar里面创建,更改,用户,组,权限等一系列操作

    金蝶接口对接java工具类.zip

    InvokeHelper.java文件通常是用来封装调用金蝶接口的具体逻辑。在这个类中,开发者可能定义了一系列静态方法,用于构建HTTP请求,设置请求参数,如金蝶系统的URL、认证信息、请求头以及请求体。这些方法可能会使用...

    java天气数据接口

    本文将深入探讨“Java天气数据接口”的相关知识点,包括如何调用气象数据接口,Java语言中的实现方式,以及如何在实际项目中应用。 首先,"Xfire"可能是指一个用于调用气象数据的API服务或者库,它提供了获取天气...

    Java RPC调用示例

    总结一下,Java RPC调用涉及服务接口定义、数据序列化、网络通信、服务注册与发现以及调用处理等多个环节。通过理解这些概念和技术,我们可以更好地理解和实现Java中的RPC调用。在"RpcTest"这个示例中,我们可以深入...

    JAVA调用SAP ODATA服务.docx

    本文将详细介绍如何使用Java调用SAP ODATA服务,并针对描述中的几个关键问题进行深入探讨。 #### 1. 未经授权 (401) 在调用SAP ODATA服务时,如果出现“401 Unauthorized”错误,通常是因为服务器拒绝了请求,因为...

    java调用网易云音乐接口

    本篇文章将深入探讨如何使用Java与网易云音乐API进行交互,以及如何解析返回的数据。 首先,我们需要理解网易云音乐提供的接口。这些接口通常包括但不限于搜索歌曲、获取歌单、获取用户信息等。在描述中提到的...

    java在Linux下调用sap的RFC接口必备so文件 libsapjco3.so

    Java在Linux环境中调用SAP RFC接口涉及到的关键技术点包括Java与SAP的集成、Linux系统下的动态链接库(.so文件)以及SAP的RFC(远程功能调用)技术。这里将详细介绍这些知识点。 首先,SAP RFC是SAP提供的一种通信...

    java扫描仪接口调用源码

    Java扫描仪接口调用源码涉及的技术点广泛,主要涵盖了Java与硬件设备交互、服务器部署以及Web服务的实现。在本文中,我们将深入探讨这些关键知识点。 首先,Java扫描仪接口调用涉及到Java的JNI(Java Native ...

    使用java调用jenkins api

    以下是一些关于如何使用Java调用Jenkins API的重要知识点: 1. **Jenkins REST API**: Jenkins主要通过RESTful API提供服务,这些API以JSON或XML格式返回数据。开发者可以使用HTTP请求(GET、POST、PUT、DELETE等...

    java 调用 360 api 接口实现批量查询手机号码归属地

    在本场景中,我们将讨论如何使用Java语言调用360提供的API接口来实现批量查询手机号码的归属地。360作为知名的互联网安全公司,提供了一系列的API服务,其中包括查询电话号码信息的功能。 首先,我们需要了解Java中...

Global site tag (gtag.js) - Google Analytics