uTools-Manuals/docs/java/javax/net/ssl/SNIHostName.html

393 lines
21 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="header">
<div class="subTitle">
compact1, compact2, compact3
</div>
<div class="subTitle">
javax.net.ssl
</div>
<h2 class="title" title="Class SNIHostName">Class SNIHostName</h2>
</div><div class="contentContainer">
<ul class="inheritance">
<li><a href="../../../java/lang/Object.html" title="class in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../javax/net/ssl/SNIServerName.html" title="class in javax.net.ssl">javax.net.ssl.SNIServerName</a></li>
<li>
<ul class="inheritance">
<li>javax.net.ssl.SNIHostName</li>
</ul> </li>
</ul> </li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr/> <br/> <pre>public final class <span class="typeNameLabel">SNIHostName</span>
extends <a href="../../../javax/net/ssl/SNIServerName.html" title="class in javax.net.ssl">SNIServerName</a></pre>
<div class="block">
<span>此类的实例表示服务器名称指示SNI扩展中的类型为<a href="../../../javax/net/ssl/StandardConstants.html#SNI_HOST_NAME"><code>host_name</code></a>的服务器名称。</span>
<p> <span>如第3节“服务器名称指示” <a href="http://www.ietf.org/rfc/rfc6066.txt">TLS Extensions (RFC 6066))中所述</a> “HostName”包含服务器的完全限定的DNS主机名如客户端所了解。</span> <span>主机名的编码服务器名称值使用ASCII编码表示为字节串而不带有后跟点。</span> <span>这使得国际化域名IDN的支持下经过中规定的使用A标签国际化域名的应用程序IDNA的有效字符串的ASCII兼容编码ACE的形式 <a href="http://www.ietf.org/rfc/rfc5890.txt">RFC 5890</a></span> </p>
<p> <span>请注意, <code>SNIHostName</code>对象是不可变的。</span> </p>
</div>
<dl>
<dt>
<span class="simpleTagLabel">从以下版本开始:</span>
</dt>
<dd>
1.8
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<span><a href="../../../javax/net/ssl/SNIServerName.html" title="javax.net.ssl中的类"><code>SNIServerName</code></a> <a href="../../../javax/net/ssl/StandardConstants.html#SNI_HOST_NAME"><code>StandardConstants.SNI_HOST_NAME</code></a></span>
</dd>
</dl> </li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- --> </a> <h3>构造方法摘要</h3>
<table border="0" cellpadding="3" cellspacing="0" class="memberSummary" summary="Constructor Summary table, listing constructors, and an explanation">
<caption>
<span>构造方法</span>
<span class="tabEnd"> </span>
</caption>
<tbody>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SNIHostName.html#SNIHostName-byte:A-">SNIHostName</a></span>(byte[] encoded)</code>
<div class="block">
使用指定的编码值创建一个
<code>SNIHostName</code>
</div> </td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SNIHostName.html#SNIHostName-java.lang.String-">SNIHostName</a></span>(<a href="../../../java/lang/String.html" title="class in java.lang">String</a> hostname)</code>
<div class="block">
使用指定的主机名创建一个
<code>SNIHostName</code>
</div> </td>
</tr>
</tbody>
</table> </li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- --> </a> <h3>方法摘要</h3>
<table border="0" cellpadding="3" cellspacing="0" class="memberSummary" summary="Method Summary table, listing methods, and an explanation">
<caption>
<span class="activeTableTab" id="t0"><span>所有方法</span><span class="tabEnd"> </span></span>
<span class="tableTab" id="t1"><span><a href="javascript:show(1);">静态方法</a></span><span class="tabEnd"> </span></span>
<span class="tableTab" id="t2"><span><a href="javascript:show(2);">接口方法</a></span><span class="tabEnd"> </span></span>
<span class="tableTab" id="t4"><span><a href="javascript:show(8);">具体的方法</a></span><span class="tabEnd"> </span></span>
</caption>
<tbody>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor" id="i0">
<td class="colFirst"><code>static <a href="../../../javax/net/ssl/SNIMatcher.html" title="class in javax.net.ssl">SNIMatcher</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SNIHostName.html#createSNIMatcher-java.lang.String-">createSNIMatcher</a></span>(<a href="../../../java/lang/String.html" title="class in java.lang">String</a> regex)</code>
<div class="block">
<span><code>SNIHostName</code>创建一个<a href="../../../javax/net/ssl/SNIMatcher.html" title="javax.net.ssl中的类"><code>SNIMatcher</code></a>对象。</span>
</div> </td>
</tr>
<tr class="rowColor" id="i1">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SNIHostName.html#equals-java.lang.Object-">equals</a></span>(<a href="../../../java/lang/Object.html" title="class in java.lang">Object</a> other)</code>
<div class="block">
将此服务器名称与指定对象进行比较。
</div> </td>
</tr>
<tr class="altColor" id="i2">
<td class="colFirst"><code><a href="../../../java/lang/String.html" title="class in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SNIHostName.html#getAsciiName--">getAsciiName</a></span>()</code>
<div class="block">
返回此
<code>SNIHostName</code>对象的
<a href="../../../java/nio/charset/StandardCharsets.html#US_ASCII"><code>StandardCharsets.US_ASCII</code></a>兼容主机名。
</div> </td>
</tr>
<tr class="rowColor" id="i3">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SNIHostName.html#hashCode--">hashCode</a></span>()</code>
<div class="block">
返回此
<code>SNIHostName</code>的哈希码值。
</div> </td>
</tr>
<tr class="altColor" id="i4">
<td class="colFirst"><code><a href="../../../java/lang/String.html" title="class in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/net/ssl/SNIHostName.html#toString--">toString</a></span>()</code>
<div class="block">
返回对象的字符串表示形式,包括此
<code>SNIHostName</code>对象中的DNS主机名。
</div> </td>
</tr>
</tbody>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.javax.net.ssl.SNIServerName">
<!-- --> </a> <h3>Methods inherited from class javax.net.ssl.<a href="../../../javax/net/ssl/SNIServerName.html" title="class in javax.net.ssl">SNIServerName</a></h3> <code><a href="../../../javax/net/ssl/SNIServerName.html#getEncoded--">getEncoded</a>, <a href="../../../javax/net/ssl/SNIServerName.html#getType--">getType</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- --> </a> <h3>Methods inherited from class java.lang.<a href="../../../java/lang/Object.html" title="class in java.lang">Object</a></h3> <code><a href="../../../java/lang/Object.html#clone--">clone</a>, <a href="../../../java/lang/Object.html#finalize--">finalize</a>, <a href="../../../java/lang/Object.html#getClass--">getClass</a>, <a href="../../../java/lang/Object.html#notify--">notify</a>, <a href="../../../java/lang/Object.html#notifyAll--">notifyAll</a>, <a href="../../../java/lang/Object.html#wait--">wait</a>, <a href="../../../java/lang/Object.html#wait-long-">wait</a>, <a href="../../../java/lang/Object.html#wait-long-int-">wait</a></code></li>
</ul> </li>
</ul> </li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- --> </a> <h3>构造方法详细信息</h3> <a name="SNIHostName-java.lang.String-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>SNIHostName</h4> <pre>public SNIHostName(<a href="../../../java/lang/String.html" title="class in java.lang">String</a> hostname)</pre>
<div class="block">
<span>使用指定的主机名创建一个<code>SNIHostName</code></span>
<p> <span>需要注意的是每<a href="http://www.ietf.org/rfc/rfc6066.txt">RFC 6066</a> ,主机名的编码服务器名称值是<a href="../../../java/nio/charset/StandardCharsets.html#US_ASCII"><code>StandardCharsets.US_ASCII</code></a>兼容。</span> <span>在这种方法中, <code>hostname</code>可以是一个用户友好的国际化域名IDN</span> <span><a href="../../../java/net/IDN.html#toASCII-java.lang.String-int-"><code>IDN.toASCII(String, int)</code></a>被用于强制ASCII字符中的主机名见限制<a href="http://www.ietf.org/rfc/rfc3490.txt">RFC 3490</a> <a href="http://www.ietf.org/rfc/rfc1122.txt">RFC 1122</a> <a href="http://www.ietf.org/rfc/rfc1123.txt">RFC 1123</a> )和翻译<code>hostname</code>成ASCII兼容性编码ACE</span> </p>
<pre> <span>IDN.toASCII(hostname, IDN.USE_STD3_ASCII_RULES);</span> </pre>
<p> <span>如果<code>hostname</code>参数是非法的:</span> </p>
<ul>
<li> <span><code>hostname</code>是空的,</span> </li>
<li> <span><code>hostname</code>以尾随点结尾,</span> </li>
<li> <span><code>hostname</code>不符合RFC 3490规范的有效国际化域名IDN</span> </li>
</ul>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>hostname</code> - 此服务器名称的主机名
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../java/lang/NullPointerException.html" title="class in java.lang">NullPointerException</a></code> - 如果
<code>hostname</code>
<code>null</code>
</dd>
<dd>
<code><a href="../../../java/lang/IllegalArgumentException.html" title="class in java.lang">IllegalArgumentException</a></code> - 如果
<code>hostname</code>是非法的
</dd>
</dl> </li>
</ul> <a name="SNIHostName-byte:A-">
<!-- --> </a>
<ul class="blockListLast">
<li class="blockList"> <h4>SNIHostName</h4> <pre>public SNIHostName(byte[] encoded)</pre>
<div class="block">
<span>使用指定的编码值创建一个<code>SNIHostName</code></span>
<p> <span>该方法通常用于解析所请求的SNI扩展中的编码名称值。</span> </p>
<p> <span>根据<a href="http://www.ietf.org/rfc/rfc6066.txt">RFC 6066</a> ,主机名的编码名称值为<a href="../../../java/nio/charset/StandardCharsets.html#US_ASCII"><code>StandardCharsets.US_ASCII</code>-</a> compliant。</span> <span>然而在先前版本的SNI扩展 <a href="http://www.ietf.org/rfc/rfc4366.txt">RFC 4366</a> 编码的主机名使用UTF-8编码表示为字节串。</span> <span>为了版本容限,此方法允许<code>encoded</code>参数的字符集可以是<a href="../../../java/nio/charset/StandardCharsets.html#UTF_8"><code>StandardCharsets.UTF_8</code></a> ,以及<a href="../../../java/nio/charset/StandardCharsets.html#US_ASCII"><code>StandardCharsets.US_ASCII</code></a></span> <span><a href="../../../java/net/IDN.html#toASCII-java.lang.String-"><code>IDN.toASCII(String)</code></a>用于将<code>encoded</code>参数转换为ASCII兼容编码ACE主机名。</span> </p>
<p> <span>强烈建议此构造函数仅用于解析所请求的SNI扩展中的编码名称值。</span> <span>否则,遵守<a href="http://www.ietf.org/rfc/rfc6066.txt">RFC 6066</a> ,请始终使用<a href="../../../java/nio/charset/StandardCharsets.html#US_ASCII"><code>StandardCharsets.US_ASCII</code></a>兼容的字符集并强制执行主机名上ASCII字符的限制<a href="http://www.ietf.org/rfc/rfc3490.txt">RFC 3490</a> <a href="http://www.ietf.org/rfc/rfc1122.txt">RFC 1122</a> <a href="http://www.ietf.org/rfc/rfc1123.txt">RFC 1123</a> )为<code>encoded</code>的说法,或者使用<a href="../../../javax/net/ssl/SNIHostName.html#SNIHostName-java.lang.String-"><code>SNIHostName(String)</code></a>代替。</span> </p>
<p> <span>如果<code>encoded</code>参数是非法的:</span> </p>
<ul>
<li> <span><code>encoded</code>是空的,</span> </li>
<li> <span><code>encoded</code>以尾随点结束,</span> </li>
<li> <span><code>encoded</code>未编码<a href="../../../java/nio/charset/StandardCharsets.html#US_ASCII"><code>StandardCharsets.US_ASCII</code></a><a href="../../../java/nio/charset/StandardCharsets.html#UTF_8"><code>StandardCharsets.UTF_8</code></a>兼容字符集,</span> </li>
<li> <span><code>encoded</code>不符合RFC 3490规范的有效国际化域名IDN</span> </li>
</ul>
<p> <span>请注意, <code>encoded</code>字节数组被克隆以防止后续修改。</span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>encoded</code> - 此服务器名称的编码主机名
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../java/lang/NullPointerException.html" title="class in java.lang">NullPointerException</a></code> - 如果
<code>encoded</code>
<code>null</code>
</dd>
<dd>
<code><a href="../../../java/lang/IllegalArgumentException.html" title="class in java.lang">IllegalArgumentException</a></code> - 如果
<code>encoded</code>是非法的
</dd>
</dl> </li>
</ul> </li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- --> </a> <h3>方法详细信息</h3> <a name="getAsciiName--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getAsciiName</h4> <pre>public <a href="../../../java/lang/String.html" title="class in java.lang">String</a> getAsciiName()</pre>
<div class="block">
<span>返回此<code>SNIHostName</code>对象的<a href="../../../java/nio/charset/StandardCharsets.html#US_ASCII"><code>StandardCharsets.US_ASCII</code></a>兼容主机名。</span>
<p> <span>请注意,根据<a href="http://www.ietf.org/rfc/rfc6066.txt">RFC 6066</a> 返回的主机名可能是包含A标签的国际化域名。</span> <span><a href="http://www.ietf.org/rfc/rfc5890.txt">RFC 5890</a>有关详细A-标签规范的更多信息。</span> </p>
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
<code>SNIHostName</code>对象的
<a href="../../../java/nio/charset/StandardCharsets.html#US_ASCII"><code>StandardCharsets.US_ASCII</code></a>兼容主机名
</dd>
</dl> </li>
</ul> <a name="equals-java.lang.Object-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>equals</h4> <pre>public boolean equals(<a href="../../../java/lang/Object.html" title="class in java.lang">Object</a> other)</pre>
<div class="block">
<span>将此服务器名称与指定对象进行比较。</span>
<p> <span>根据<a href="http://www.ietf.org/rfc/rfc6066.txt">RFC 6066</a> DNS主机名不区分大小写。</span> <span>两个服务器主机名相等,如果且仅当它们具有相同的名称类型,并且主机名在与个别无关的比较中相等。</span> </p>
</div>
<dl>
<dt>
<span class="overrideSpecifyLabel">重写:</span>
</dt>
<dd>
<code><a href="../../../javax/net/ssl/SNIServerName.html#equals-java.lang.Object-">equals</a></code>
<code><a href="../../../javax/net/ssl/SNIServerName.html" title="class in javax.net.ssl">SNIServerName</a></code>
</dd>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>other</code> - 要与之进行比较的其他服务器名称对象。
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
如果只有
<code>other</code>被认为等于这个实例则为true
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<span><a href="../../../java/lang/Object.html#hashCode--"><code>Object.hashCode()</code></a> <a href="../../../java/util/HashMap.html" title="java.util中的类"><code>HashMap</code></a></span>
</dd>
</dl> </li>
</ul> <a name="hashCode--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>hashCode</h4> <pre>public int hashCode()</pre>
<div class="block">
<span>返回此<code>SNIHostName</code>的哈希码值。</span>
<p> <span>使用此<code>SNIHostName</code>的不区分大小写的主机名生成哈希码值。</span> </p>
</div>
<dl>
<dt>
<span class="overrideSpecifyLabel">重写:</span>
</dt>
<dd>
<code><a href="../../../javax/net/ssl/SNIServerName.html#hashCode--">hashCode</a></code>
<code><a href="../../../javax/net/ssl/SNIServerName.html" title="class in javax.net.ssl">SNIServerName</a></code>
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
这个
<code>SNIHostName</code>的哈希码值。
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../java/lang/Object.html#equals-java.lang.Object-"><code>Object.equals(java.lang.Object)</code></a>
<a href="../../../java/lang/System.html#identityHashCode-java.lang.Object-"><code>System.identityHashCode(java.lang.Object)</code></a>
</dd>
</dl> </li>
</ul> <a name="toString--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>toString</h4> <pre>public <a href="../../../java/lang/String.html" title="class in java.lang">String</a> toString()</pre>
<div class="block">
<span>返回对象的字符串表示形式,包括此<code>SNIHostName</code>对象中的DNS主机名。</span>
<p> <span>表示的具体细节未经说明,可能有变更,但以下可能被视为典型:</span> </p>
<pre> <span>"type=host_name (0), value= &lt;hostname&gt;"</span> </pre>
<span>&lt;hostname&gt;”是主机名的ASCII表示可能包含A标签。</span>
<span>例如,伪主机名的返回值可能如下所示:</span>
<pre> <span>"type=host_name (0), value=www.example.com"</span> </pre>
<span>要么</span>
<pre> <span>"type=host_name (0), value=xn--fsqu00a.xn--0zwm56d"</span> </pre>
<p> <span>请注意,表示的确切细节未经说明,可能会有变动。</span> </p>
</div>
<dl>
<dt>
<span class="overrideSpecifyLabel">重写:</span>
</dt>
<dd>
<code><a href="../../../javax/net/ssl/SNIServerName.html#toString--">toString</a></code>
<code><a href="../../../javax/net/ssl/SNIServerName.html" title="class in javax.net.ssl">SNIServerName</a></code>
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
对象的字符串表示形式。
</dd>
</dl> </li>
</ul> <a name="createSNIMatcher-java.lang.String-">
<!-- --> </a>
<ul class="blockListLast">
<li class="blockList"> <h4>createSNIMatcher</h4> <pre>public static <a href="../../../javax/net/ssl/SNIMatcher.html" title="class in javax.net.ssl">SNIMatcher</a> createSNIMatcher(<a href="../../../java/lang/String.html" title="class in java.lang">String</a> regex)</pre>
<div class="block">
<span><code>SNIHostName</code>创建一个<a href="../../../javax/net/ssl/SNIMatcher.html" title="javax.net.ssl中的类"><code>SNIMatcher</code></a>对象。</span>
<p> <span>这种方法可以由服务器使用来验证可接受的<code>SNIHostName</code></span> <span>例如,</span> </p>
<pre> <span>SNIMatcher matcher =
SNIHostName.createSNIMatcher("www\\.example\\.com");</span> </pre>
<span>将接受主机名“www.example.com”。</span>
<pre> <span>SNIMatcher matcher =
SNIHostName.createSNIMatcher("www\\.example\\.(com|org)");</span> </pre>
<span>将接受主机名“www.example.com”和“www.example.org”。</span>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>regex</code> -
<a href="../../../java/util/regex/Pattern.html#sum">regular expression pattern</a>表示要匹配的主机名
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
一个
<code>SNIMatcher</code>对象为
<code>SNIHostName</code> s
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../java/lang/NullPointerException.html" title="class in java.lang">NullPointerException</a></code> - 如果
<code>regex</code>
<code>null</code>
</dd>
<dd>
<code><a href="../../../java/util/regex/PatternSyntaxException.html" title="class in java.util.regex">PatternSyntaxException</a></code> - if the regular expression's syntax is invalid
</dd>
</dl> </li>
</ul> </li>
</ul> </li>
</ul>
</div>
</div>