【问题标题】:Configure a spring web service to accept content type text/xml soap 1.2 messages配置 Spring Web 服务以接受内容类型 text/xml soap 1.2 消息
【发布时间】:2015-08-26 14:36:57
【问题描述】:

是否可以配置spring-ws-core:2.x.x 网络服务以接受Content-Type=text/xml 附带的Soap 1.2 消息信封(http://www.w3.org/2003/05/soap-envelope)?如果是这样,如何/在哪里?我们的代码配置都是基于 java 和注解的。

【问题讨论】:

    标签: java web-services soap spring-ws


    【解决方案1】:

    我已经能够通过创建自定义 SaajSoapMessageFactory 来处理带有 Content-Type=text/xmlSoap 1.2 消息信封,其中在 parseMimeHeaders() 方法中,我强制将 MimeHeaders Content-Type 标头值设置为 "application/soap+xml"(此是Soap 1.2 期望Content-Type 是什么) - 因此,我强制将传入的SOAP 请求的Content-Type 更改为"application/soap+xml"

    private MimeHeaders parseMimeHeaders(InputStream inputStream) throws IOException {
        MimeHeaders mimeHeaders = new MimeHeaders();
        if (inputStream instanceof TransportInputStream) {
            TransportInputStream transportInputStream = (TransportInputStream) inputStream;
            for (Iterator<String> headerNames = transportInputStream.getHeaderNames(); headerNames.hasNext();) {
                String headerName = headerNames.next();
                for (Iterator<String> headerValues = transportInputStream.getHeaders(headerName); headerValues.hasNext();) {
                    String headerValue = headerValues.next();
                    StringTokenizer tokenizer = new StringTokenizer(headerValue, ",");
                    while (tokenizer.hasMoreTokens()) {
                        if(headerName.equalsIgnoreCase(TransportConstants.HEADER_CONTENT_TYPE)) {
                            mimeHeaders.addHeader(headerName, "application/soap+xml");
                            tokenizer.nextToken();
                        } else {
                            mimeHeaders.addHeader(headerName, tokenizer.nextToken().trim());
                        }
                    }
                }
            }
        }       
    
        return mimeHeaders;
    }
    

    然而,在我看来,这就像一个完整的 hack,所以我欢迎任何替代建议或 cmets!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-10
      • 1970-01-01
      • 2017-07-14
      • 2017-11-08
      相关资源
      最近更新 更多