如何修复Scala http请求addHeader不工作
我的用例是将当前http请求的一些头复制到我正在发出的新请求中。然而,它不工作,你能让我知道什么是问题或任何替代方案如何修复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"
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我不知道。。。