java 解析域名得到host


// 形如https://www.baidu.com 或 www.baidu.com, 判斷這兩種情況,並解析前者去掉http頭,傳入domain host

// 方案1:正則表達式 + URI解析方法

import java.io.IOException;
import java.net.URI;
import java.net.URL;
import java.util.regex.Pattern;

public class Main {

    public static void main(String[] args) {
        System.out.println("Hello World!");
//        parseDomain();
        String url = "www.baidu.com";
        String domain = parseDomain(url);
        System.out.println("+++domain: " + domain);
    }

    public static boolean verifyDomain(String url) {
        String regex = "^([hH][tT]{2}[pP]:/*|[hH][tT]{2}[pP][sS]:/*|[fF][tT][pP]:/*)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~\\/])+(\\?{0,1}(([A-Za-z0-9-~]+\\={0,1})([A-Za-z0-9-~]*)\\&{0,1})*)$";
        Pattern pattern = Pattern.compile(regex);
        if (pattern.matcher(url).matches()) {
            System.out.println("是正確的網址");
            return true;
        } else {
            System.out.println("非法網址");
            return false;
        }
    }

    private static String parseDomain(String url) {
        String regex = "^([hH][tT]{2}[pP]:/*|[hH][tT]{2}[pP][sS]:/*|[fF][tT][pP]:/*)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~\\/])+(\\?{0,1}(([A-Za-z0-9-~]+\\={0,1})([A-Za-z0-9-~]*)\\&{0,1})*)$";
        Pattern pattern = Pattern.compile(regex);
        if (pattern.matcher(url).matches()) {
       return URI.create(url).getHost();
        } else {
       return url;
        }
    }

    public static void parseDomain() throws IOException {
        String urlAddress = "http://www.roseindia.net/jsf/JSFLoginApplication.shtml";
        urlAddress = "http://www.baidu.com";
        URL url = new URL(urlAddress);
        System.out.println("url.getHost() = " + url.getHost());
        System.out.println("url.getPath() = " + url.getPath());
        System.out.println("url.getPort() = " + url.getPort());
        System.out.println("url.getProtocol() = " + url.getProtocol());
    }
}

 

// 方案2: String的split(), substring(), 拆解出子串來

一般的URL的結構:

[ 協議名 ]:// [ 域名 ] : [ 端口號 ] / [ 路 ] ... [ 徑 ]/ [ 文件名 ] ? [ 參 ]& [ 數 ] & [ 部 ]& [ 分 ] # [ 錨部分 ]

js代碼如下:

function parseURL(url){
var urlObj={};
urlObj.scheme = url.substring(0,url.indexOf(":")); //協議頭
var temp1=url.substring(url.indexOf("//")+2); //去掉協議頭后剩下部分
var temp2=temp1.substring(0,temp1.indexOf("/"))//域名+端口號,substring(start,stop) stop要比最后一個提取的字符位置多1
urlObj.domaine = temp2.substring(0,temp1.indexOf(":"));
urlObj.port = temp2.substring(temp1.indexOf(":")+1);

if(temp1.indexOf("?")!=-1){
urlObj.path =temp1.substring(temp1.indexOf("/")+1,temp1.indexOf("?"))//路徑+文件名
emp1.IndexOf("#")!=-1? urlObj.params=temp1.substring(temp1.indexOf("?")+1,temp1.IndexOf("#"))
      :urlObj.params=temp1.substring(temp1.indexOf("?")+1)
}else{
urlObj.path =temp1.substring(temp1.indexOf("/")+1);
}
urlObj.fragment=temp1.substring(temp1.indexOf("#")+1);
return urlObj;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM