内容 - 使用spring-integration调用soap类型

时间:2017-03-24 11:03:59

标签: http soap http-headers spring-integration content-type

我正在尝试使用spring-integration执行soapcall。 WSDL是soap 1.2。

我的弹簧配置:

<int:channel id="inputChannel" />

<int:channel id="outputChannel" />

<int:header-enricher input-channel="inputChannel" output-channel="outputChannel">               
    <int:header name="#{T(org.springframework.http.HttpHeaders).CONTENT_TYPE}" value="text/xml" />
</int:header-enricher>

<bean id="eduflexWsTemplate" class="org.springframework.ws.client.core.WebServiceTemplate"
    p:marshaller-ref="eduflexMarshaller" 
    p:unmarshaller-ref="eduflexMarshaller" 
    p:defaultUri="http://srv-nl-edu65/wsParalax/"
    p:messageFactory-ref="soap12MessageFactory"
/>  

<bean id="soap12MessageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory">
    <property name="soapVersion">
        <util:constant static-field="org.springframework.ws.soap.SoapVersion.SOAP_12"/>
    </property>
</bean>

Java代码:

MyRequestXml request = new MyRequestXml();
    //construct request

    MyResponse response = (MyResponse) m_template.marshalSendAndReceive(request, new WebServiceMessageCallback() {

        public void doWithMessage(WebServiceMessage message) {
            SoapMessage soapMessage = (SoapMessage) message;
            soapMessage.setSoapAction("soapAction");
        }
    });

最初没有设置soap操作,我得到了相关的错误,所以我通过使用WebServiceMessageCallback来修复它。

但现在我收到有关内容类型的错误:

org.springframework.ws.client.WebServiceTransportException: Unsupported Media Type [415]

我正在尝试使用spring integration header-enricher覆盖它,但是在wireshark中我看到标题内容类型仍然是Multipart / Related。

所以我的问题是如何强制spring集成将内容类型设置为text / xml?迫使肥皂版本1.2似乎也没有效果。

1 个答案:

答案 0 :(得分:0)

我发现了我的问题,我有一个将mtomEnabled设置为true的Jaxb2Marshaller。