How to enable / x -www-form-urlencoded HttpHeader application in Akka-http 2.4.1?

I am using Akka Http 2.4.1 to send an https request to twitter api.

According to their documentation, I need two httpheaders. Namely: Authorization and ContentType.

To quote their documents:

The request should contain a Content-Type header with the value application / x-www-form-urlencoded; charset = UTF-8.

Here is my code:

val authorization = Authorization(BasicHttpCredentials(key, secret)) /* This header is removed from the request with the following explanation! "Explicitly set HTTP header 'Content-Type: application/x-www-form-urlencoded;' is ignored, illegal RawHeader" */ val contentType = RawHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8") Http().singleRequest( HttpRequest( uri = Uri("https://api.twitter.com/oauth2/token"), method = HttpMethods.POST, headers = List(authorization, contentType), entity = HttpEntity(`text/plain(UTF-8)`, "grant_type=client_credentials"), protocol = HttpProtocols.`HTTP/1.1`)) 

How to enable Content-Type header with value application/x-www-form-urlencoded;charset=UTF-8 using Akka-http 2.4.1?

+5
source share
1 answer

I think if you change the entity value on HttpRequest to FormData as follows:

 HttpRequest( uri = Uri("https://api.twitter.com/oauth2/token"), method = HttpMethods.POST, headers = List(authorization), entity = FormData("grant_type" -> "client_credentials").toEntity, protocol = HttpProtocols.`HTTP/1.1`) ) 

Then you must set the Content-Type to automatically switch to application/x-www-form-urlencoded;charset=UTF-8

+14
source

Source: https://habr.com/ru/post/1243263/


All Articles