【问题标题】:Apache Camel + Spring-WS + AuthorizationApache Camel + Spring-WS + 授权
【发布时间】:2015-10-15 20:47:41
【问题描述】:

我有一个使用 apache camel 的项目,我必须消耗一个 WS ..

.setHeader(HttpHeaders.AUTHORIZATION, constant("Basic {base64"))
.to("spring-ws:http://myhost.com.br?soapAction=myAction")

我收到以下错误:org.springframework.ws.client.WebServiceTransportException: Unauthorized [401]

如果我只使用带有标题的soap-ui 发送,它工作得很好。

有什么想法吗?非常感谢。

【问题讨论】:

  • 您是在{base64 之后缺少} 还是只是一个错字?

标签: java spring web-services soap apache-camel


【解决方案1】:

来自http://people.apache.org/~dkulp/camel/spring-web-services.html

注册表中的自定义消息发送者或工厂可以这样引用:

from("direct:example")
.to("spring-ws:http://foo.com/bar?messageFactory=#messageFactory&messageSender=#messageSender")

弹簧配置:

<!-- authenticate using HTTP Basic Authentication -->
<bean id="messageSender" class="org.springframework.ws.transport.http.CommonsHttpMessageSender">
    <property name="credentials">
        <bean class="org.apache.commons.httpclient.UsernamePasswordCredentials">
            <constructor-arg index="0" value="admin"/>
            <constructor-arg index="1" value="secret"/>
        </bean>
    </property>
</bean>

<!-- force use of Sun SAAJ implementation, http://static.springsource.org/spring-ws/sites/1.5/faq.html#saaj-jboss -->
<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory">
    <property name="messageFactory">
        <bean class="com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl"></bean>
    </property>
</bean>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多