Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

WHY is the Rest Message URL being truncated?

lonesoac01
Giga Guru

Hello all,

 

    I am able to use the below code in a lower Dev environment just fine.  I move the code up to an IT environment, and I am seeing the StringParameter being contatenated to: https://dingdongs.net/v1/cb_link  Please note, that I was originally using the "setStringparameterNoEscape" and the same thing is happening.  I commented out both "setStringParameter" and "setStringparameterNoEscape" and ServiceNow did not use any URL at all, which was expected.  So, I know that my code is using this string value, there is just something I am missing.

 

 

var r = new sn_ws.RESTMessageV2('qualtrics', 'POST');
//gs.log(body,"REST API TESTING"); // Testing purpose need to comment this line
r.setStringParameterNoEscape('interactionRecord', body);
var qualtricsURL = gs.getProperty('qualtrics.API.URL');
//Development Env
r.setStringParameter('endpoint', 'https://dingdongs.net/v1/cb_link?jobId=123&apiKey=123');
//Prod Env
//r.setStringParameterNoEscape('endpoint', qualtricsURL);
var response = r.execute();
var responseBody = response.getBody();
//gs.log('STRY0750821 ' + body);
var httpStatus = response.getStatusCode();
//gs.log(httpStatus,"REST API TESTING");  // Testing purpose need to comment this line

 

 Thank you.

8 REPLIES 8

Maybe a backslash \ to escape it in your code?  

r.setStringParameter(
  "endpoint",
  "https://dingdongs.net/v1/cb_link\?jobId=123&apiKey=123"
);

Amit Pandey
Kilo Sage

Hi @lonesoac01 

 

I think when you set parameters using setStringParameter(), ServiceNow will URL encode them, which might cause issues with certain characters like &.Can you try this once- 

 

var r = new sn_ws.RESTMessageV2('qualtrics', 'POST');
r.setStringParameterNoEscape('interactionRecord', body);
var qualtricsURL = gs.getProperty('qualtrics.API.URL');
r.setStringParameterNoEscape('endpoint', 'https://dingdongs.net/v1/cb_link?jobId=123&apiKey=123');
var response = r.execute();
var responseBody = response.getBody();
var httpStatus = response.getStatusCode();

 

 

I tried the above code and the URL is still being truncated. 

r.setStringParameterNoEscape('endpoint', 'https://dingdongs.net/v1/cb_link?jobId=123&apiKey=123');

I then tried just removing the question mark from the endpoint and the URL was no longer truncated.

r.setStringParameterNoEscape('endpoint', 'https://dingdongs.net/v1/cb_linkjobId=123&apiKey=123');

I even tried escaping the question mark with a backslash as someone else on this string suggested and it was still truncated.

 

I am thinking that there might be a system setting or something that I just do not know about.

Hi @lonesoac01 

 

Lets break the URL into multiple parts, concatenating them together. Can you try this-

var endpoint = 'https://dingdongs.net/v1/cb_link' + '?jobId=123' + '&apiKey=123';
r.setStringParameterNoEscape('endpoint', endpoint);

 

Regards,

Amit