如何修复Scala http请求addHeader不工作

如何修复Scala http请求addHeader不工作,scala,http,akka,seq,Scala,Http,Akka,Seq,我的用例是将当前http请求的一些头复制到我正在发出的新请求中。然而,它不工作,你能让我知道什么是问题或任何替代方案 private def apiPostRequest(path:String, host: HostStoreInfo, byteString:ByteString , prevRequest:HttpRequest):Future[HttpResponse] = { val request = HttpRequest(HttpMethods.POST,s"

我的用例是将当前http请求的一些头复制到我正在发出的新请求中。然而,它不工作,你能让我知道什么是问题或任何替代方案

  private def apiPostRequest(path:String, host: HostStoreInfo, byteString:ByteString , prevRequest:HttpRequest):Future[HttpResponse] = {
    val request = HttpRequest(HttpMethods.POST,s"http://${host.host}:${host.port}$path",Nil,HttpEntity.apply(byteString))
    logger.info("Previous request  "+prevRequest)
    if(prevRequest!=null) {
      for(h<-prevRequest.headers) { //Copying over to new request
        logger.info("header  "+h)
        request.addHeader(h)
      }
    }
    logger.info("Here are the headers "+request.headers). // coming as null
    Http().singleRequest(request)
  }
private def apiPostRequest(路径:字符串,主机:HostStoreInfo,byteString:byteString,prevRequest:HttpRequest):未来[HttpResponse]={
val request=HttpRequest(HttpMethods.POST,s“http://${host.host}:${host.port}$path”,Nil,HttpEntity.apply(byteString))
logger.info(“以前的请求”+以前的请求)
if(prevRequest!=null){
for(h请求(像scala中的大多数好东西一样)是不可变的。
.addHeader
返回添加了头的新请求

试试这个:

val request = Option(prevRequest)// prevRequest should actually be Option[HttpRequest] to begin with. Using nulls is code smell!
  .toSeq
  .flatMap(_.headers)
  .foldLeft(
    HttpRequest(
      HttpMethods.POST,
      s"http://${host.host}:${host.port}$path",
      Nil,
      HttpEntity(byteString)
    )
   ) { _ addHeader _ }
或者更好的是,就这样:

   val request = HttpRequest(
      HttpMethods.POST,
      s"http://${host.host}:${host.port}$path",
      Option(prevRequest).toSeq.flatMap(_.headers),
      HttpEntity(byteString)
    )
请求(就像scala中的大多数好东西一样)是不可变的。
.addHeader
返回添加了头的新请求

试试这个:

val request = Option(prevRequest)// prevRequest should actually be Option[HttpRequest] to begin with. Using nulls is code smell!
  .toSeq
  .flatMap(_.headers)
  .foldLeft(
    HttpRequest(
      HttpMethods.POST,
      s"http://${host.host}:${host.port}$path",
      Nil,
      HttpEntity(byteString)
    )
   ) { _ addHeader _ }
或者更好的是,就这样:

   val request = HttpRequest(
      HttpMethods.POST,
      s"http://${host.host}:${host.port}$path",
      Option(prevRequest).toSeq.flatMap(_.headers),
      HttpEntity(byteString)
    )

[错误]找到:Seq[akka.http.scaladsl.model.HttpHeader][ERROR]必需:scala.collection.immutable.Seq[akka.http.scaladsl.model.HttpHeader][ERROR]选项(prevRequest).toSeq.flatMap(uq.headers),[ERROR]^[ERROR]第二次尝试时,在获取以下错误时发现一个错误option@hareendrareddy我不知道…[错误]找到:Seq[akka.http.scaladsl.model.HttpHeader][ERROR]必需:scala.collection.immutable.Seq[akka.http.scaladsl.model.HttpHeader][ERROR]选项(prevRequest).toSeq.flatMap(uq.headers),[错误]^[ERROR]第二次尝试时发现一个错误,出现以下错误option@hareendrareddy我不知道。。。