Scala 使用spray客户端发布请求

Scala 使用spray客户端发布请求,scala,post,spray,spray-client,Scala,Post,Spray,Spray Client,我想使用spray客户端通过HTTP POST请求向服务器发送XML,并设置一些标题等。然而,我能找到的唯一示例是JSON请求 是否有人可以使用spray客户端通过HTTP POST通信为XML提供一个简单的代码片段 谢谢 下面是一个小代码示例,用于创建一个sprayHttpRequest,它具有基于xmlNodeSeq的有效负载。让我知道这是否有帮助,或者您是否需要更多代码(如提交请求): 下面是一个小代码示例,用于创建具有基于xml的负载的sprayHttpRequest。让我知道这是否有帮

我想使用spray客户端通过HTTP POST请求向服务器发送XML,并设置一些标题等。然而,我能找到的唯一示例是JSON请求

是否有人可以使用spray客户端通过HTTP POST通信为XML提供一个简单的代码片段


谢谢

下面是一个小代码示例,用于创建一个spray
HttpRequest
,它具有基于xml
NodeSeq
的有效负载。让我知道这是否有帮助,或者您是否需要更多代码(如提交请求):


下面是一个小代码示例,用于创建具有基于xml的负载的spray
HttpRequest
。让我知道这是否有帮助,或者您是否需要更多代码(如提交请求):


用一种老套的方式来明确内容类型。注意:有效负载可以是字符串或xml文本

import spray.client.pipelining._
import spray.http._

val pipeline: HttpRequest => Future[HttpResponse] = {
   addHeader("My-Header-Key", "myheaderdata") ~>
   ((_:HttpRequest).mapEntity( _.flatMap( f => HttpEntity( 
      f.contentType.withMediaType(MediaTypes.`application/xml`),f.data)))) 
     ~> sendReceive
}

pipeline(
  Post(
     "http://www.example.com/myendpoint", <MyXmlTag>MyXmlData</MyXmlTag>
  )
)
导入spray.client.pipeline_
导入spray.http_
val管道:HttpRequest=>Future[HttpResponse]={
addHeader(“我的标题键”、“我的标题数据”)~>
((:HttpRequest).mapEntity()
f、 contentType.withMediaType(MediaTypes.application/xml`)、f.data)))
~>发送接收
}
管道(
职位(
"http://www.example.com/myendpoint,MyXmlData
)
)

以一种老套的方式具体说明内容类型。注意:有效负载可以是字符串或xml文本

import spray.client.pipelining._
import spray.http._

val pipeline: HttpRequest => Future[HttpResponse] = {
   addHeader("My-Header-Key", "myheaderdata") ~>
   ((_:HttpRequest).mapEntity( _.flatMap( f => HttpEntity( 
      f.contentType.withMediaType(MediaTypes.`application/xml`),f.data)))) 
     ~> sendReceive
}

pipeline(
  Post(
     "http://www.example.com/myendpoint", <MyXmlTag>MyXmlData</MyXmlTag>
  )
)
导入spray.client.pipeline_
导入spray.http_
val管道:HttpRequest=>Future[HttpResponse]={
addHeader(“我的标题键”、“我的标题数据”)~>
((:HttpRequest).mapEntity()
f、 contentType.withMediaType(MediaTypes.application/xml`)、f.data)))
~>发送接收
}
管道(
职位(
"http://www.example.com/myendpoint,MyXmlData
)
)

我必须构建什么.sbt才能运行它?我添加了
resolvers+=“spray repo”at”http://repo.spray.io“和
libraryDependencies+=”io.spray“%”spray can“%”“1.0”`但它会抱怨。@Marius Kavansky,我添加了build.sbt中的相关部分。我希望有帮助。谢谢。但是,如何使用填充的http头(如X-Application)和一些自定义的post数据发出post请求呢?“不过,我可以提出一个新问题。@Marius Kavansky,是的,提出一个新问题可能是个更好的主意。”。但是,如果您想要一个快速的示例,请查看此链接的底部,其中显示了一个请求并通过
~>
添加了一个标题:我刚刚做了--请看一看。我必须构建什么.sbt才能运行它?我添加了
resolvers+=“spray repo”at”http://repo.spray.io“和
libraryDependencies+=”io.spray“%”spray can“%”“1.0”`但它会抱怨。@Marius Kavansky,我添加了build.sbt中的相关部分。我希望有帮助。谢谢。但是,如何使用填充的http头(如X-Application)和一些自定义的post数据发出post请求呢?“不过,我可以提出一个新问题。@Marius Kavansky,是的,提出一个新问题可能是个更好的主意。”。但是,如果您想要一个简单的例子,请查看此链接的底部,其中显示了一个请求并通过
~>
添加了一个标题:我刚刚做了--请看一看。
import spray.client.pipelining._
import spray.http._

val pipeline: HttpRequest => Future[HttpResponse] = {
   addHeader("My-Header-Key", "myheaderdata") ~>
   ((_:HttpRequest).mapEntity( _.flatMap( f => HttpEntity( 
      f.contentType.withMediaType(MediaTypes.`application/xml`),f.data)))) 
     ~> sendReceive
}

pipeline(
  Post(
     "http://www.example.com/myendpoint", <MyXmlTag>MyXmlData</MyXmlTag>
  )
)