HTTP API Call Issue from Adobe campaign classic Java script | Community
Skip to main content
ujjyals87155580
July 9, 2020
Solved

HTTP API Call Issue from Adobe campaign classic Java script

  • July 9, 2020
  • 2 replies
  • 2041 views

Hi experts,

 

I am making a HTTP API call from javascript. The API takes a JSON object as the request body. So I am using the following script for creating the JSON object for request

 

var eml = "abc.com";

var fst = "abc";

var lst = "com";

var obj = {email: eml, first_name: fst, last_name: lst};

httpRequest.body = JSON.stringify(obj);

 

When I make this call the API responds correctly.

But if the variables : eml , fst , lst  has double byte characters like Japanese, Chinese, Korean characters, then the same API call is failing with a error "Request Body should be a valid JSON object."

 

If I call the API from Postman, with the double byte character set up, then API works.

Any idea why it is failing from Adobe campaign javascript?

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by Manoj_Kumar

Hello @ujjyals87155580,

 

Do you have character coding set up in the Headers?

 

It will look something like this

http.header["Content-Type"] = "application/json;charset=utf-8";

If this does not work

Try this  before adding it to json object.

JSON.parse(eml)

 

Let me know if that works.

Thanks

 

2 replies

Manoj_Kumar
Community Advisor
Manoj_KumarCommunity AdvisorAccepted solution
Community Advisor
July 9, 2020

Hello @ujjyals87155580,

 

Do you have character coding set up in the Headers?

 

It will look something like this

http.header["Content-Type"] = "application/json;charset=utf-8";

If this does not work

Try this  before adding it to json object.

JSON.parse(eml)

 

Let me know if that works.

Thanks

 

Manoj  | https://themartech.pro
Milan_Vucetic
Level 9
July 10, 2020

Hi @ujjyals87155580,

take care of escaping special characters.

You may call a following function to escape text before putting it in JSON:

 

String.prototype.escapeSpecialCharacters = function() {
return this.replace(/\\n/g, "\\n")
.replace(/\\'/g, "\\'")
.replace(/\\"/g, '\\"')
.replace(/\\&/g, "\\&")
.replace(/\\r/g, "\\r")
.replace(/\\t/g, "\\t")
.replace(/\\b/g, "\\b")
.replace(/\\f/g, "\\f");
}; 

 

Regards,

Milan