Module  java.xml.ws
软件包  javax.xml.ws.spi.http

Class HttpExchange



  • public abstract class HttpExchange
    extends Object
    此类封装了收到的HTTP请求和在一个交换中生成的响应。 它提供了从客户端检查请求以及构建和发送响应的方法。

    必须关闭HttpExchange以释放或重用基础资源。 未能关闭交易所的效果未定。

    从以下版本开始:
    1.7,JAX-WS 2.2
    • 字段详细信息

      • REQUEST_CIPHER_SUITE

        public static final String REQUEST_CIPHER_SUITE
        标准属性:通过HTTPS接收请求时的密码套件值

        类型:字符串

        另请参见:
        Constant Field Values
      • REQUEST_KEY_SIZE

        public static final String REQUEST_KEY_SIZE
        标准属性:通过HTTPS接收请求时算法的位大小

        类型:整数

        另请参见:
        Constant Field Values
      • REQUEST_X509CERTIFICATE

        public static final String REQUEST_X509CERTIFICATE
        标准属性:与请求相关联的SSL证书(如果有)

        类型:java.security.cert.X509Certificate []将此数组的顺序定义为以信任的升序排列。 链中的第一个证书是由客户端设置的一个证书,接下来是用于验证第一个证书的证书,依此类推。

        另请参见:
        Constant Field Values
    • 构造方法详细信息

      • HttpExchange

        public HttpExchange​()
    • 方法详细信息

      • getRequestHeaders

        public abstract Map<String,List<String>> getRequestHeaders​()
        返回包含此请求中包含的HTTP标头的不可变地图。 该地图中的键将是标题名称,而这些值将是包含每个包含的值的字符串列表(对于多次列出的标题,或者是接受逗号分隔的值列表)单线)。 在这两种情况下,标题名称的值将按照请求中包含的顺序进行显示。

        地图中的键不区分大小写。

        结果
        一个不可变的地图,可以用来访问请求头
      • getRequestHeader

        public abstract String getRequestHeader​(String name)
        返回指定请求标头的值。 如果请求没有包含指定名称的头,则此方法返回null。 如果有多个名称相同的头,则此方法返回请求中的第一个头。 标题名称不区分大小写。 这是一个获取标题的方法(而不是使用getRequestHeaders() )。
        参数
        name - 请求标头的名称
        结果
        返回请求的标头的值,如果请求没有该名称的标题,则返回null
      • getResponseHeaders

        public abstract Map<String,List<String>> getResponseHeaders​()
        返回一个可变地图,可以存储HTTP响应标头,哪个将作为此响应的一部分进行传输。 地图中的键将是标题名称,而这些值必须是包含应包含多次(按照它们应包含的顺序)的每个值的字符串列表。

        地图中的键不区分大小写。

        结果
        一个可以用来设置响应头的可变地图。
      • addResponseHeader

        public abstract void addResponseHeader​(String name,
                                               String value)
        添加具有给定名称和值的响应头。 该方法允许响应头具有多个值。 这是添加响应头(而不是使用getResponseHeaders() )的方便方法。
        参数
        name - 标题的名称
        value - 附加标头值。 如果它包含八位位组字符串,则应根据RFC 2047(http://www.ietf.org/rfc/rfc2047.txt)进行编码,
        另请参见:
        getResponseHeaders()
      • getRequestURI

        public abstract String getRequestURI​()
        将请求的URI的一部分从协议名称返回到HTTP请求的第一行中的查询字符串。 容器不解码此字符串。
        结果
        请求URI
      • getContextPath

        public abstract String getContextPath​()
        返回应用程序中所有端点的上下文路径。 该路径是请求URI的一部分,指示请求的上下文。 上下文路径始终位于请求URI中。 路径以“/”字符开头,但不以“/”字符结尾。 如果此方法返回“”,则该请求用于默认上下文。 容器不解码此字符串。

        上下文路径用于计算端点地址。 HttpContext.getPath()

        结果
        应用程序中所有端点的上下文路径
        另请参见:
        HttpContext.getPath()
      • getRequestMethod

        public abstract String getRequestMethod​()
        获取HTTP请求方法
        结果
        请求方式
      • getHttpContext

        public abstract HttpContext getHttpContext​()
        返回此交易所的HttpContext 容器将请求与关联的Endpoint的HttpContext进行匹配
        结果
        这个交换的HttpContext
      • close

        public abstract void close​()
                            throws IOException
        必须调用这个结束交换。 容器处理关闭请求和响应流。 这必须被调用,以便容器可以释放或重用基础资源。
        异常
        IOException - 如果有任何i / o错误
      • getRequestBody

        public abstract InputStream getRequestBody​()
                                            throws IOException
        返回可以从中读取请求主体的流。 对此方法的多次调用将返回相同的流。
        结果
        可以从中读取请求主体的流。
        异常
        IOException - 请求处理中是否有任何I / O错误
      • getResponseBody

        public abstract OutputStream getResponseBody​()
                                              throws IOException
        返回响应主体必须写入的流。 setStatus(int) )在调用此方法之前必须调用。 对此方法的多次调用(对于相同的交换)将返回相同的流。
        结果
        响应主体被写入的流
        异常
        IOException - 响应处理期间是否有任何I / O错误
      • setStatus

        public abstract void setStatus​(int status)
        设置响应的HTTP状态代码。

        在调用getResponseBody()之前必须调用此方法。

        参数
        status - 要发送的响应代码
        另请参见:
        getResponseBody()
      • getRemoteAddress

        public abstract InetSocketAddress getRemoteAddress​()
        返回调用此请求的远程实体的未解析地址。
        结果
        调用者的InetSocketAddress
      • getLocalAddress

        public abstract InetSocketAddress getLocalAddress​()
        返回收到请求的未解决的本地地址。
        结果
        本地接口的InetSocketAddress
      • getProtocol

        public abstract String getProtocol​()
        从请求中以协议/ majorVersion.minorVersion的形式返回协议串。 例如,“HTTP / 1.1”
        结果
        来自请求的协议串
      • getScheme

        public abstract String getScheme​()
        返回用于创建此请求的方案的名称,例如:http或https。
        结果
        用于提出此请求的方案的名称
      • getPathInfo

        public abstract String getPathInfo​()
        返回Web服务路径后面的额外路径信息,但在请求URI中的查询字符串之前,将以“/”字符开头。

        这可以用于MessageContext.PATH_INFO

        结果
        解码Web服务的额外路径信息。 它是在Web服务路径之后但在请求URI null的查询字符串之前的路径,如果请求URI中没有额外的路径
      • getQueryString

        public abstract String getQueryString​()
        返回路径后请求URI中包含的查询字符串。

        这可以用于MessageContext.QUERY_STRING

        结果
        未解码的请求URI的查询字符串,如果请求URI没有请求URI, null
      • getAttributeNames

        public abstract Set<String> getAttributeNames​()
        提供与此 HttpExchange相关联的所有属性名称。
        结果
        所有属性名称的集合
        另请参见:
        getAttribute(String)
      • getUserPrincipal

        public abstract Principal getUserPrincipal​()
        返回Principal ,表示此身份验证的用户HttpExchange
        结果
        认证用户的 null如果没有认证, null
      • isUserInRole

        public abstract boolean isUserInRole​(String role)
        指示经过身份验证的用户是否包含在指定的逻辑“角色”中。
        参数
        role - 指定角色的名称
        结果
        如果提出此请求的用户属于给定角色, true