从Play Framework 2.2.1调用http基本身份验证的jax ws客户端

时间:2014-03-17 17:50:01

标签: scala soap playframework-2.0 jax-ws

目前我正在开发一个项目,我有一个Play Framework,我需要一些外部服务来与我合作。

不幸的是,这些服务都是所有SOAP Web服务,我需要以某种方式调用它们。因此,对于手头的任务,我已经生成了SoapExecutionContext并适当地使用了scala.concurrent.future块来为系统提供一些异步。

但我被困在授权部分。我尝试执行的开发Web服务依赖于基本的HTTP身份验证。因此,在搜索网络后,我想出了以下解决方案:

def userLogin(userLogin: UserLogin): LoginOutput = {
    val service = setCredentials( new ProjectWebService().getProjectWebServiceSoap)

    service.userLogin(userLogin.getUserName, userLogin.getPassword, userLogin.getUserIP)
  }

  def setCredentials(service: ProjectWebServiceSoap):ProjectWebServiceSoap = {
    val requestContext = service.asInstanceOf[BindingProvider].getRequestContext

    requestContext.put(BindingProvider.USERNAME_PROPERTY, Config.getxxxUsername())
    requestContext.put(BindingProvider.PASSWORD_PROPERTY, Config.getxxxPassword())

    service
  }

使用Jax-WS生成客户端类。但是这个解决方案不起作用,我收到错误:Caused by: com.sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 401: Unauthorized

我无法弄清楚原因。有谁知道为什么这个Jax-WS基本的http认证与Play框架不起作用?这里缺少什么?

提前致谢

0 个答案:

没有答案