2015-10-15 126 views
0

我有一個項目中使用Apache的駱駝,我不得不消耗WS ..Apache的駱駝+ Spring的WS +授權

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

我也得到了如下錯誤:org.springframework.ws.client。 WebServiceTransportException:未經授權[401]

如果我使用soap-ui發送只是頭部,它是行之有效的。

任何想法?非常感謝。

+0

是否缺少'後'}' {base64'或者它只是一個錯字? – Oerd

回答

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") 

Spring配置:

<!-- 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>