JAvaにおけるURIの下線の問題
1228 ワード
の原因となる
SpringCloudを学習する過程で、
この異常な意味は私のhostnameが無効だということですが、まさか
検証#ケンショウ#
実際には、仕様に従ってホスト名がhostnameに含まれないことは確かです.具体的にはrfc 952仕様を参照してください.説明内容は以下の通りです.
大まかな意味は、ホスト名が1つのテキスト文字列、最大24文字、アルファベットA-Z、数字0-9、マイナス記号(-)、英語(.)であることができる.だから私は
例
次のコードを実行すると、なぜかわかりますか?
最後の印刷結果は次のとおりです.
SpringCloudを学習する過程で、
spring.application.name=user_service
を設定したサービスプロバイダuser-serviceを作成しました.その後、別のサービスでRestTemplateを使用してサービスを呼び出すと、次のような異常が投げ出されます.java.lang.IllegalStateException: Request URI does not contain a valid hostname: http://USER_SERVICE/user/by_id?id=1
この異常な意味は私のhostnameが無効だということですが、まさか
USER_SERVICE
はhostnameとして使えないのですか?検証#ケンショウ#
実際には、仕様に従ってホスト名がhostnameに含まれないことは確かです.具体的にはrfc 952仕様を参照してください.説明内容は以下の通りです.
A "name" (Net, Host, Gateway, or Domain name) is a text string up to 24 characters drawn from the alphabet (A-Z), digits (0-9), minus sign (-), and period (.).
大まかな意味は、ホスト名が1つのテキスト文字列、最大24文字、アルファベットA-Z、数字0-9、マイナス記号(-)、英語(.)であることができる.だから私は
_
を-
に変更して、問題を解決しました.例
次のコードを実行すると、なぜかわかりますか?
URI uri1 = URI.create("http://www.baidu-plus.com/");
System.out.println(uri1.getHost());
// prints www.baidu-plus.com
URI uri2 = URI.create("http://www.baidu_plus.com/");
System.out.println(uri2.getHost());
// prints null
最後の印刷結果は次のとおりです.
www.baidu-plus.com
null