I am working with an obsolete HTTP-API (which I cannot change) that responds with JSON in the body but gives the Content-Type: text/plain; charset=utf-8 header Content-Type: text/plain; charset=utf-8 Content-Type: text/plain; charset=utf-8 .
I try to untie this HTTP body as JSON, but I get the following exception: akka.http.scaladsl.unmarshalling.Unmarshaller$UnsupportedContentTypeException: Unsupported Content-Type, supported: application/json
My code is as follows:
import spray.json.DefaultJsonProtocol import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._ import akka.http.scaladsl.unmarshalling._ case class ResponseBody(status: String, error_msg: String) object ResponseBodyJsonProtocol extends DefaultJsonProtocol { implicit val responseBodyFormat = jsonFormat2(ResponseBody) } def parse(entity: HttpEntity): Future[ResponseBody] = { implicit val materializer: Materializer = ActorMaterializer() import ResponseBodyJsonProtocol._ Unmarshal[HttpEntity](entity).to[ResponseBody] }
An example HTTP response is as follows:
HTTP/1.1 200 OK Cache-Control: private Content-Encoding: gzip Content-Length: 161 Content-Type: text/plain; charset=utf-8 Date: Wed, 16 Dec 2015 18:15:14 GMT Server: Microsoft-IIS/7.5 Vary: Accept-Encoding X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET {"status":"1","error_msg":"Missing parameter"}
What can I do to ignore the Content-Type in the HTTP response and parse as JSON?
source share