2017-06-08 11 views
0

私は、例hereに従ってScalaでwebsocketクライアントを作成しています。 websocketリクエストでカスタムヘッダーを渡したいと思います。 HttpHeaderを拡張してCustomHeaderクラスを作成しました。私はこのエラーを解決する、またはにカスタムヘッダーを追加するにはどうすればよいscalaにカスタムヘッダを追加するWebSocketRequest

type mismatch; 
[error] found : Seq[com.apple.geo.neutron.services.notification.event.CustomHeader] 
[error] required: scala.collection.immutable.Seq[akka.http.scaladsl.model.HttpHeader] 
[error] Error occurred in an application involving default arguments. 
[error]  val request = new WebSocketRequest(uri = "ws://localhost:9035", extraHeaders = headers) 

:クライアントで次に

final class CustomHeader(headerName: String, headerValue: String) extends HttpHeader { 
    override def name(): String = headerName 

    override def value(): String = headerValue 

    override def lowercaseName(): String = name.toLowerCase 

    override def renderInRequests(): Boolean = true 

    override def renderInResponses(): Boolean = true 
} 

は、

val headers = Seq(new CustomHeader("X-Auth-Token", authToken)) 
val request = new WebSocketRequest(uri = "ws://localhost:9035", extraHeaders = headers) 

私はactivator compileを実行し、それは次のようなエラーがスローされますwebsocketリクエスト?

答えて

0

:としてheadersを定義してみてください。 thisスレッドのおかげで、カスタムヘッダーを追加する作業方法が見つかりました。ここに私がやったことです:

final class CustomHeader(headerValue: String) extends ModeledCustomHeader[CustomHeader] { 
    override val companion = CustomHeader 

    override def value(): String = headerValue 

    override def renderInRequests(): Boolean = true 

    override def renderInResponses(): Boolean = true 
} 

object CustomHeader extends ModeledCustomHeaderCompanion[CustomHeader] { 
    override val name = "X-Auth-Token" 

    override def parse(value: String) = Try(new CustomHeader(value)) 
} 

そして、WebSocketの要求は次のように作成されます。このソリューションは、この特定のエラーを解決しながら

val headers = scala.collection.immutable.Seq(new CustomHeader(authToken)) 
val request = new WebSocketRequest(uri = "ws://localhost:9035", extraHeaders = headers) 
0

Seqここでは不変のSeqではありません。自分の質問に答える

val headers = scala.collection.immutable.Seq(new CustomHeader("X-Auth-Token", authToken)) 
+0

、それは他のコンパイルエラーが発生しました:この方法は、形質レンダリング可能でレンダリング[R <:akka.http.impl.util.Rendering](r:R)r.typeは定義されていません。 – user87407

関連する問題