首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Scalaxb异步客户端

如何使用Scalaxb异步客户端
EN

Stack Overflow用户
提问于 2019-07-04 15:27:48
回答 1查看 253关注 0票数 1

在我当前的项目中,我必须实现一个客户端来调用SOAP服务。我选择使用ScalaXB,以便从WSDL文件生成客户端及其模型。我设法编译了项目并生成了模型,但是我被HTTP调用卡住了。

这是我的DispatchHttpClientsAsync特性,问题是我如何才能真正进行Http调用?

代码语言:javascript
复制
trait DispatchHttpClientsAsync extends HttpClientsAsync {
  lazy val httpClient = new DispatchHttpClient {}
  // https://github.com/AsyncHttpClient/async-http-client/blob/1.9.x/src/main/java/com/ning/http/client/AsyncHttpClientConfigDefaults.java
  def requestTimeout: Duration = 60.seconds
  def connectionTimeout: Duration = 5.seconds

  trait DispatchHttpClient extends HttpClient {
    import dispatch._

    // Keep it lazy. See https://github.com/eed3si9n/scalaxb/pull/279
    lazy val http = Http.configure(_.
      setRequestTimeout(requestTimeout.toMillis.toInt).
      setConnectTimeout(connectionTimeout.toMillis.toInt))

    def request(in: String, address: java.net.URI, headers: Map[String, String])(implicit ec: ExecutionContext): Future[String] = {
      val req = url(address.toString).setBodyEncoding("UTF-8") <:< headers << in
      http(req > as.String)
    }
  }
}
EN

回答 1

Stack Overflow用户

发布于 2019-07-04 18:18:59

DispatchHttpClientsAsync只是引擎盖下的一个特性。可以调用的实际客户端实现是在其他地方生成的。我不知道您的SOAP服务的名称和它的操作,但是看看WSDL示例http://scalaxb.org/wsdl-support

这将生成以下9个文件:

  • scalaxb/httpclients_async.scala
  • scalaxb/httpclients_dispatch_async.scala
  • scalaxb/scalaxb.scala
  • scalaxb/soap12_async.scala
  • soapenvelope12/soapenvelope12.scala
  • soapenvelope12/soapenvelope12_xmlprotocol.scala
  • stockquote/stockquote.scala
  • stockquote/stockquote_type1.scala
  • stockquote/xmlprotocol.scala

看一下股票报价/文件夹,应该有一个用于SOAP服务的特征和方法。在该示例中,您应该扩展特征StockQuoteSoap12Binding --有一个所需方法的实现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56882691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档