হোস্টের নামটি অবশ্যই নিম্নলিখিত সিনট্যাক্সের সাথে মেলে:
hostname = domainlabel [ "." ] | 1*( domainlabel "." ) toplabel [ "." ]
domainlabel = alphanum | alphanum *( alphanum | "-" ) alphanum
toplabel = alpha | alpha *( alphanum | "-" ) alphanum
যেমন আপনি দেখতে পাচ্ছেন, কেবল .এবং -অনুমোদিত _তবে তা নয়।
তারপরে আপনি বলবেন যে //5-12-145-35_s-81:443এটি অনুমোদিত, এবং এটি তবে হোস্ট নামের জন্য নয় ।
কীভাবে তা বন্ধ হয়ে যায় তা দেখতে:
URI uriBadHost = URI.create("//5-12-145-35_s-81:443");
System.out.println("uri = " + uriBadHost);
System.out.println(" authority = " + uriBadHost.getAuthority());
System.out.println(" host = " + uriBadHost.getHost());
System.out.println(" port = " + uriBadHost.getPort());
URI uriGoodHost = URI.create("//example.com:443");
System.out.println("uri = " + uriGoodHost);
System.out.println(" authority = " + uriGoodHost.getAuthority());
System.out.println(" host = " + uriGoodHost.getHost());
System.out.println(" port = " + uriGoodHost.getPort());
আউটপুট
uri = //5-12-145-35_s-81:443
authority = 5-12-145-35_s-81:443
host = null
port = -1
uri = //example.com:443
authority = example.com:443
host = example.com
port = 443
যেমন আপনি দেখতে পাচ্ছেন, যখন এর authorityবৈধ হোস্টের নাম থাকবে, hostএবং portপার্স করা হবে তবে যখন বৈধ নয়, তখন authorityএটিকে ফ্রিফর্ম পাঠ্য হিসাবে বিবেচনা করা হবে, এবং আর কোনও বিশ্লেষণ করা হবে না।
হালনাগাদ
মন্তব্য থেকে:
System.out.println( new URI(null, null, "/5-12-145-35_s-81", 443, null, null, null))আউটপুট: /// 5-12-145-35_s-81: 443। আমি এটি হোস্ট নাম হিসাবে দিচ্ছি
যে URIকনস্ট্রাক্টরকে আপনি কল করছেন এটি একটি সুবিধার পদ্ধতি এবং এটি সাধারণভাবে একটি সম্পূর্ণ ইউআরআই স্ট্রিং তৈরি করে এবং তারপরে পার্স করে।
পাসিং "5-12-145-35_s-81", 443হয়ে যায় //5-12-145-35_s-81:443।
পাসিং "/5-12-145-35_s-81", 443হয়ে যায় ///5-12-145-35_s-81:443।
প্রথমটিতে, এটি একটি হোস্ট এবং বন্দর এবং পার্স করতে ব্যর্থ।
দ্বিতীয়টিতে কর্তৃপক্ষের অংশটি খালি, এবং /5-12-145-35_s-81:443এটি একটি পথ ।
URI uri1 = new URI(null, null, "/5-12-145-35_s-81", 443, null, null, null);
System.out.println("uri = " + uri1);
System.out.println(" authority = " + uri1.getAuthority());
System.out.println(" host = " + uri1.getHost());
System.out.println(" port = " + uri1.getPort());
System.out.println(" path = " + uri1.getPath());
আউটপুট
uri = ///5-12-145-35_s-81:443
authority = null
host = null
port = -1
path = /5-12-145-35_s-81:443