Netsuite 使用NLAPIRestURL向服务发出请求

Netsuite 使用NLAPIRestURL向服务发出请求,netsuite,suitescript,Netsuite,Suitescript,如何使用nlapiRequestURL向服务发出请求?我在下面的尝试失败,出现错误:意外的\u错误(从NetSuite脚本执行日志输出) 我的服务设置为在不登录的情况下运行,当我使用其url通过浏览器直接访问它时,它可以正常工作。失败的只是通过nlapiRequestURL发出的请求 知道会出什么问题吗 // This code executes in Account.Model.js (register function) // I am using my own netsuite user

如何使用
nlapiRequestURL
向服务发出请求?我在下面的尝试失败,出现错误:
意外的\u错误
(从NetSuite脚本执行日志输出)

我的服务设置为在不登录的情况下运行,当我使用其url通过浏览器直接访问它时,它可以正常工作。失败的只是通过
nlapiRequestURL
发出的请求

知道会出什么问题吗

// This code executes in Account.Model.js (register function)

// I am using my own netsuite user credential here
var cred = {
    email: "MY_NETSUITE_EMAIL"
,   account: "EXXXXX"           // My account id
,   role: "3"                   // Administrator
,   password: "MY_NETSUITE_PASSWORD"
};

var headers = {"User-Agent-x": "SuiteScript-Call",
               "Authorization": "NLAuth nlauth_account=" + cred.account + ", nlauth_email=" + cred.email + 
                                ", nlauth_signature= " + cred.password + ", nlauth_role=" + cred.role,
               "Content-Type": "application/json"};

var payload = {
    type: 'is_email_valid'
,   email: 'spt015@foo.com'
};

// A raw request to the service works fine:
// http://mywebsite.com/services/foo.ss?type=is_email_valid&email=spt015@foo.com

// Error occurs on next line
var response = nlapiRequestURL(url, payload, headers); 
  • 您正试图使用Netsuite身份验证标头调用非Netsuite url。除非出于某种原因,您已经在服务上实现了NS风格的授权,否则您不需要这样做

  • NLAPIRestURL不会自动将有效负载格式化为查询字符串。如果您的服务采用发布的JSON正文,那么您需要调用JSON.stringify(有效负载),例如

    var response=nlapiRequestURL(url,JSON.stringify(有效负载),头文件)

  • 如果您的服务需要一个查询字符串(如示例中所示),那么您需要构造一个查询字符串并将其附加到您的服务url中。e、 g

    var qs='';
    对于(有效载荷中的var k)qs+=k+'='+k分量(有效载荷[k])+'&';
    var response=nlapRequestURL(url+'?'+qs.slice(0,-1),null,headers)

  • 您正试图使用Netsuite身份验证标头调用非Netsuite url。除非出于某种原因,您已经在服务上实现了NS风格的授权,否则您不需要这样做

  • NLAPIRestURL不会自动将有效负载格式化为查询字符串。如果您的服务采用发布的JSON正文,那么您需要调用JSON.stringify(有效负载),例如

    var response=nlapiRequestURL(url,JSON.stringify(有效负载),头文件)

  • 如果您的服务需要一个查询字符串(如示例中所示),那么您需要构造一个查询字符串并将其附加到您的服务url中。e、 g

    var qs='';
    对于(有效载荷中的var k)qs+=k+'='+k分量(有效载荷[k])+'&';
    var response=nlapRequestURL(url+'?'+qs.slice(0,-1),null,headers)


  • 我建议将NLAPIRestURL更改为GET而不是POST,并将参数添加到url中。您的函数调用将改为如下所示

    nlapiRequestURL(url, null, headers, "GET")
    

    我建议将NLAPIRestURL更改为GET而不是POST,并将参数添加到url中。您的函数调用将改为如下所示

    nlapiRequestURL(url, null, headers, "GET")
    

    为什么要将Netsuite授权头传递给外部服务?是否要调用RESTlet?我看不出您在代码中的何处指定了url-如
    var url=
    …我想您只是没有显示该部分,但是值得检查我猜你为什么要将Netsuite授权头传递给你的外部服务?你在调用RESTlet吗?我看不出你在代码中的什么地方指定了url是什么-如
    var url=
    …我猜你只是没有显示这一部分,但值得检查一下