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?
Solved! Go to Solution.
Views
Replies
Total Likes
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
Views
Replies
Total Likes
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
Views
Replies
Total Likes
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
Views
Replies
Total Likes