Я пытаюсь воспроизвести это или это, но я продолжаю получать сообщение об ошибке, которое не могу исправить...
Прежде всего, вот мои зависимости:
compile 'io.spray:spray-can_2.11:1.3.1'
compile 'io.spray:spray-routing_2.11:1.3.1',
compile 'io.spray:spray-json_2.11:1.2.6'
Теперь я пытаюсь сделать следующее:
class WHttpService extends Actor with HttpService with ActorLogging {
implicit def actorRefFactory = context
def receive = runRoute(route)
lazy val route = logRequest(showReq _) {
// Way too much imports but I tried all I could find
import spray.json._
import DefaultJsonProtocol._
import MasterJsonProtocol._
import spray.httpx.SprayJsonSupport._
path("server" / Segment / DoubleNumber / DoubleNumber) { (login, first, second) =>
get {
complete {
Answer(1, "test")
}
}
}
}
private def showReq(req : HttpRequest) = LogEntry(req.uri, InfoLevel)
}
С участием:
case object MasterJsonProtocol extends DefaultJsonProtocol with SprayJsonSupport {
import spray.json._
case class Answer(code: Int, content: String)
implicit val anwserFormat: JsonFormat[Answer] = jsonFormat2(Answer)
}
Теперь я получаю эту ошибку:
Error:(42, 19) type mismatch;
found : MasterJsonProtocol.Answer
required: spray.httpx.marshalling.ToResponseMarshallable
Answer(1, "test")
^
Я пробовал много вещей, но не могу заставить это работать. я пробовал с
Answer(1, "test").toJson
Answer(1, "test").toJson.asJsObject
Наконец то, что я сделал, было
complete {
Answer(1, "test").toJson.compactPrint
}
Это работает, но отправляется клиенту как Content-Type: text/plain, когда мне нужно application/json.
Кто-нибудь видит, в чем здесь проблема?
Изменить: я добавил пример проекта на github https://github.com/ydemartino/spray-test