如何在Spring-ws端点中访问HTTP标头?
我的代码如下所示:
public class MyEndpoint extends AbstractMarshallingPayloadEndpoint {
protected Object invokeInternal(Object arg) throws Exception {
MyReq request = (MyReq) arg;
// need to access some HTTP headers here
return createMyResp();
}
}
invokeInternal()
仅获取未编组的JAXB对象作为参数。如何访问请求内部附带的HTTP标头invokeInternal()
?
一种可能可行的方法是创建一个Servlet过滤器,该过滤器将标头值存储到ThreadLocal
变量中,然后在内部访问该变量invokeInternal()
,但是有没有更好的,更像弹簧的方法来做到这一点?
您可以添加这些方法。在TransportContextHolder
将持有线程局部变量(在这种情况下HTTP)与交通有关的一些数据。您可以HttpServletRequest
从访问TransportContext
。
protected HttpServletRequest getHttpServletRequest() {
TransportContext ctx = TransportContextHolder.getTransportContext();
return ( null != ctx ) ? ((HttpServletConnection ) ctx.getConnection()).getHttpServletRequest() : null;
}
protected String getHttpHeaderValue( final String headerName ) {
HttpServletRequest httpServletRequest = getHttpServletRequest();
return ( null != httpServletRequest ) ? httpServletRequest.getHeader( headerName ) : null;
}
问题内容: 我在玩spring-boot,遇到了问题。创建RESTful Web服务非常容易。但是我不能用spring-boot来运行肥皂服务。 实际上,我的项目没有spring-boot-starter-web依赖项。 是否需要一个尚不存在的额外的sprint-boot-starter? 有哪些解决方法?如果我有一个用于SOAP服务的web.xml,可以在初始化过程中以某种方式包含它吗?我知道已
问题内容: 我是Web编程的新手,尤其是Java语言的新手,所以我才了解到标头和正文是什么。 我正在使用Spring MVC编写RESTful服务。我可以在控制器中创建简单的服务。我需要帮助来了解如何从REST服务控制器中的方法请求中获取HTTP标头信息。我想解析出标题并从中获取一些属性。 你能解释一下我如何获得这些信息吗? 问题答案: 使用注释参数时,参数将检索标头信息。因此,你可以执行以下操作
问题内容: 我想通过将其存储为Servlet上下文属性来在Servlet和Web服务(JAX-WS)之间共享一个对象。但是,如何从Web服务检索servlet上下文? 问题答案: JAX-WS通过消息上下文使servlet上下文可用,可以使用Web服务上下文来检索它。插入以下成员将使JAX- WS将对Web服务上下文的引用注入到您的Web服务中: 然后,您可以使用以下命令访问servlet上下文:
问题内容: 使用Spring-WS时,如何在客户端动态设置自定义HTTP标头(不是SOAP标头)? 问题答案: 配置:
问题内容: 我想捕获客户端JavaScript中的HTTP请求标头字段,主要是Referer和User-Agent。我该如何访问它们? Google Analytics(分析)设法通过将您嵌入到页面中的JavaScript来获取数据,因此绝对有可能。 问题答案: 如果要访问引荐来源网址和用户代理,客户端Javascript可以使用这些引荐来源网址和用户代理,但不能直接访问标头。 要检索引荐来源网址
问题内容: 我正在尝试编写一个访问USB端口以读取和写入通过USB连接的设备的Java应用程序。我面临的问题是,我不知道在Java中究竟要使用什么来做这样的事情。我在网上搜索,发现有一个叫的东西,但所有帖子看起来都相当老。 目前,我正在使用这些库,但有时会遇到一些同步错误。当我使用C#进行等效操作时,它需要的代码要少得多,而且我不会遇到任何相同的同步错误。 我的问题是, JRE的最新版本中是否包含