HttpClientRequest encoding setting

Samy_doe

15-06-2020

Hello,

 

We are doing a JS where a HttpClientRequest is used for pushing a request to another 3rd party REST API. In this request we are setting the header Content-type to application/json with charset=utf-8. However, the 3rd party that is receiving the request is not receiving it with UTF-8 encoding but in another encoding (windows-1252). Question: is there another setting other than the HttpClientRequest header that might change the encoding of a request done from ACC to another API?

Adobe Campaign Classic

Accepted Solutions (1)

Accepted Solutions (1)

Samy_doe

16-06-2020

The way you can use HttpClientRequest is in a JS activity in a workflow and it looks like:

var request = new HttpClientRequest(url);
request.connect();
request.method = "POST";
request.body = data;
request.header["Content-Type"] = "application/json;charset=UTF-8";
request.execute();

In this request the connect() and execute() methods have some optional parameters for when the endpoint has a proxy or if you want to have a call async. Documentation here: https://docs.adobe.com/content/help/en/campaign-classic/technicalresources/api/c-HttpClientRequest.h... 

However, it seems like the way the connect and execute methods are setup up is interfering with the Content-Type header meaning that in some configuration the Content-Type set up like in the above code is ignored.
This seems to be related to the proxy setting on the ACC environment we are working in. We managed to find a working code by not setting up any optional parameters but only using connect() and execute() as they are.

Answers (1)

Answers (1)

wodnicki

MVP

15-06-2020

Hi,

 

I've never been able to get HTTPClientRequest to set content-type header.

What I've done to solve is make a drop-in replacement for HTTPClientRequest class, wrapping execCommand('curl').

HTTPClientRequest is libcurl anyway.

 

Thanks,

-Jon