में जेएसओएन के रूप में 'टेक्स्ट/सादा' को अनमशॉल कैसे करें मैं एक विरासत HTTP API (जिसे मैं नहीं बदल सकता) के साथ काम कर रहा हूं जो शरीर में JSON के साथ प्रतिक्रिया करता है, लेकिन Content-Type: text/plain; charset=utf-8
शीर्षलेख देता है।अक्का HTTP
मैं JSON के रूप में जो HTTP शरीर unmarshall करने का प्रयास कर रहा हूँ, लेकिन मैं निम्नलिखित अपवाद: akka.http.scaladsl.unmarshalling.Unmarshaller$UnsupportedContentTypeException: Unsupported Content-Type, supported: application/json
मेरे कोड इस तरह दिखता है:
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]
}
एक नमूना HTTP प्रतिक्रिया इस प्रकार है:
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"}
HTTP प्रतिक्रिया में Content-Type
को अनदेखा करने और JSON के रूप में पार्स को अनदेखा करने के लिए मैं क्या कर सकता हूं?
मुझे एक ही समस्या थी और Unmarshalling के लिए कोड की अपनी अंतिम पंक्ति का उपयोग किया। किसी कारण से withContentType इकाई को बदल देता है और इसे एक सख्त इकाई में बदल देता है जिसमें सामग्री प्रकार वस्तु भी होती है। उस से शरीर निकालने के बारे में कोई विचार? –