We've updated the ServiceNow Community Code of Conduct, adding guidelines around AI usage, professionalism, and content violations. Read more

setRequestBodyFromAttachment results in response "post request body is missing content"

Pothuraju
Mega Expert

Hi community,

I am using rest message to post attachments to 3rd party tool, Im using setRequestbodyfromattachment(attacment_sysId);

but ECC queue is returning  "post request body is missing content" error.If I use base64 code as a body it is working fine but not setRequestbodyfromattachment. I have given admin access to mid server.

script is like

var myInput = 'filename.txt';

var myProfile = new GlideRecord('sys_auth_profile'); myProfile.get('name',

gs.getProperty('system.property.authProfile'));

var myAttachment = new GlideRecord('sys_attachment');

myAttachment.get('file_name',myInput);

var myEndPoint = gs.getProperty('system.property.endpoint');

var requestBody; var responseBody; var status; var sm;

try{

sm = new sn_ws.RESTMessageV2("RESTmsg", "RESTmethod");

sm.setAuthenticationProfile('basic', myProfile.sys_id);

sm.setEndpoint(myEndPoint);

sm.setRequestHeader('Accept', 'application/json');

sm.setRequestHeader('Content-Type', myAttachment.content_type); sm.setRequestBodyFromAttachment(myAttachment.sys_id);

sm.setHttpTimeout(10000);

response = sm.execute();

responseBody = response.haveError() ? response.getErrorMessage() : response.getBody();

status = response.getStatusCode(); }

catch(ex) {

responseBody = ex.getMessage();

status = '500'; }

finally {

requestBody = sm ? sm.getRequestBody():null; }

if(status == '200' || status == '201')

{ gs.log("callExternal.sendPOST: Status Code: " + status);

gs.log("callExternal.sendPOST: Request Body: " + requestBody);

gs.log("callExternal.sendPOST: Response: " + responseBody); output = 'PASS'; }

else { gs.log("callExternal.sendPOST: Status Code: " + status);

gs.log("callExternal.sendPOST: Request Body: " + requestBody);

gs.log("callExternal.sendPOST: Response: " + responseBody); output = 'FAIL'; } }

else { output = 'FAIL'; }

1 REPLY 1

Ankur Bawiskar
Tera Patron

Hi Raju,

Can you try to give contenttype in the rest message as either application/json etc and check once because the content type you are setting is from sys_attachment table which is not the expected value in that http header

sm.setRequestHeader('Content-Type', 'application/json'); 

Mark Correct if this solves your issue and also mark Helpful if you find my response worthy based on the impact.
Thanks
Ankur

 

Regards,
Ankur
Certified Technical Architect  ||  10x ServiceNow MVP  ||  ServiceNow Community Leader