如何设置内容类型?

时间:2016-05-30 21:36:57

标签: json scala akka-http

我使用akka http客户端2.4.6将json发布到服务器(服务器要求消息的内容类型为应用程序/ json处理):

val request = HttpRequest(uri = "http://localhost:9000/auth/add-user",
        method = HttpMethods.POST,
        entity = ByteString(write(createUser)))
        .withHeaders(headers.`Content-Type`(ContentTypes.`application/json`))
      Http().singleRequest(request)

我收到这个警告:

  

明确设置HTTP标头'内容类型:application / json'是   忽略,不允许显式Content-Type标头。组   而是HttpRequest.entity.contentType

并且服务器端的错误是:

  

415不支持的媒体类型

如何为其正确设置内容类型?

1 个答案:

答案 0 :(得分:6)

您需要使用预定义的一组可用withEntity定义或制作自己的定义,然后在设置数据时将其传递给它,但必须通过 // Making your own, from a string val c1 = ContentType( MediaType.custom( "my_custom_type", new MediaType.Encoding.Fixed(HttpCharsets.`UTF-8`)) ) 方法完成。< / p>

val req = HttpRequest(method = HttpMethods.POST, uri = Uri(url)
      .withQuery(..)
      .withHeaders(..)
      // notice how JSON content type is passed in here.
      .withEntity(ContentTypes.`application/json`, ByteString(write(createUser)))

然后将其传递给请求构建器:

((\b[a-z]{1,}\b).*?)(\b\2\b)(.*)$