使用Post方法为Rest Web服务设置setRequestBody

问题描述 投票:0回答:1

嗨我正在尝试使用post方法创建一个休息响应,我想动态传递变量而不是硬编码,但我失败的地方是,当我试图将一个数组作为参数发送到Rest Web服务使用post方法(示例数组[“CN = XXX_XX,OU = XXXXX,OU = 1_XXXX XXXXity组,DC = XXXX,DC =本地”])我知道有更好的方法可以找到我的代码示例。这是给我一个合适结果的方法。第一种方法:(作品)`

 try {
          var r = new sn_ws.RESTMessageV2('SailPoint_IdM', 'post');
          var txt = "{\r\n\t\"workflowArgs\":\r\n\t{\r\n\t\"identityName\":\"SiamR\",\r\n\t\"appName\":\"Active Directory\",\r\n\t\"listEntitlements\":[\"CN=ER_CxxxK,OU=xxxxx,OU=1_xxxxxx Security xxx,DC=xxxx,DC=local\"],\r\n\t\"operation\":\"Add\",\r\n\t\"ticketNumber\":\"RITM1234567\"\r\n\t}\r\n}";
    r.setRequestBody(txt);
    var response = r.execute();
    var ResponseBody = response.getBody();
    var HTTPCode = response.getStatusCode();
    gs.log(ResponseBody);
    gs.log(HTTPCode);

} catch (ex) {
    var message = ex.getMessage();
}

输出:

 Script: {"attributes":{"requestResult":{"status":"Success"}},"complete":false,"errors":null,"failure":false,"metaData":null,"requestID":"2c988d8c5bd47cf7015bebfb64cf01e6","retry":false,"retryWait":0,"status":null,"success":false,"warnings":null}
 Script: 200

2n方法(不起作用):

try {
 var r = new sn_ws.RESTMessageV2('SailPoint_IdM', 'post');
 r.setStringParameter('"listEntitlements"', '["CN=Exxx_xxxK,OU=xxxxion,OU=1_xxxxx Security xxxx,DC=xxx,DC=xxxx"]');
 r.setStringParameter('"identityName"', '"SiarmR"');
 r.setStringParameter('"appName"', '"Active Directory"');
 r.setStringParameter('"ticketNumber"', '"RITM1234567"');
 r.setStringParameter('operation', '"Add"');

//override authentication profile 
//authentication type ='basic'/ 'oauth2'
//r.setAuthentication(authentication type, profile name);

var response = r.execute();
 var responseBody = response.getBody();
 var httpStatus = response.getStatusCode();
gs.log(responseBody );
}
catch(ex) {
 var message = ex.getMessage();
}

输出:

 Script: {"attributes":{"requestResult":{"errors":["An unexpected error occurred: sailpoint.tools.GeneralException: The application script threw an exception: java.lang.NullPointerException: Null Pointer in Method Invocation BSF info: script at line: 0 column: columnNo"],"status":"FAIL","GroupStatus":null,"AppStatus":null}},"complete":false,"errors":["Status : failed\nAn unexpected error occurred: sailpoint.tools.GeneralException: The application script threw an exception: java.lang.NullPointerException: Null Pointer in Method Invocation BSF info: script at line: 0 column: columnNo\n"],"failure":false,"metaData":null,"requestID":null,"retry":false,"retryWait":0,"status":null,"success":false,"warnings":null}

 Script: 200

我正面临着这个参数的问题,因为我试图将其传递为数组参数'qazxsw poi'

请提出一种实现方法,并在建议第一种方法时动态传递所有变量

javascript json rest soap servicenow
1个回答
0
投票

下面是我的一个函数,用于处理请求端点(url),头文件或正文中出现的动态参数;

例如:参数p

["CN=Exxx_xxxK,OU=xxxxion,OU=1_xxxxx Security xxxx,DC=xxx,DC=xxxx"]

和outbuond休息设置:

var p = {abc: 'def'}; 

所以它会将所有$ {abc}替换为'def'

rest url =  https://xxxx.sss.com/api/showme?name=${abc}
rest headers name =  custom-header; value =  ${abc}
rest body =  {name: "${abc}"}
© www.soinside.com 2019 - 2024. All rights reserved.