如何从外部网站发布到NetSuite自定义记录?
我正在尝试将一个非常小的自定义Web应用程序与NetSuite集成。我想在用户点击我的Web应用程序中的按钮时在NetSuite中创建一个自定义记录。如何从外部网站发布到NetSuite自定义记录?
我已经编写了一个RESTlet,可以与REST API测试Chrome扩展一起使用。我已通过该Chrome扩展成功创建了记录。
然而,当我尝试从我的web应用程序的帖子,我得到这个错误:
"Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. The response had HTTP status code 401."
我如何可以张贴到NetSuite的一个的Restlet从外部站点?我甚至应该使用RESTlet还是有更好的方法?
RESTlets更意味着作为一个系统,系统TECHN易学。他们需要身份验证,如果您是从公共应用程序执行此操作,您的凭据将会被泄露。
Netsuite不允许您设置CORS标头,因此您的跨域集成需要通过公开的suitelet和JSONP。
由于JSONP使用get请求,所以您需要确保您的url参数最终少于2k个字符。这不是一个标准的限制,以便因人而异
模式我经常使用: 客户端代码:
var url = "public suitelet url from deployment screen";
var params = {
mode: 'neworder',
//simple name/value data
};
$.ajax({
url: url+"&"+ $.param(params) +"&jsoncallback=?",
cache:false,
dataType:'json',
success: function(jResp){
if(!jResp.success){
if(jResp.message) alert(jResp.message);
return;
}
// act on the results
}
});
的suitelet源文件中的库函数。
function _sendJSResponse(request, response, respObject){
response.setContentType('JAVASCRIPT');
//response.setHeader('Access-Control-Allow-Origin', '*');
var callbackFcn = request.getParameter("jsoncallback") || request.getParameter('callback');
if(callbackFcn){
response.writeLine(callbackFcn + "(" + JSON.stringify(respObject) + ");");
}else response.writeLine(JSON.stringify(respObject));
}
然后Suitelet功能
好的,但是如何使用外部可用的Suitelet创建自定义记录? API不是有限的吗?我在这个列表中看不到nlapiCreateRecord:请参阅SuiteAnswers文章10354 –
我已经完成了所有可用于外部可用Suitelets的任务。你可以做任何服务器端的事情,可以在你的1000单位治理限制内完成。 为suitelet Administrator创建角色。 – bknights
真棒,工作!谢谢。 –
这就是你的浏览器及其CORS设定
如果使用铬(你应该;))在Windows上,创建Chrome快捷方式具有以下标志 "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir
然后,杀/重新启动的所有实例铬在任务管理器,然后重新尝试请求
否则谷歌“上MY_BROWSER禁用CORS”
那没不为我工作。 –
这就是你的浏览器及其CORS设定 如果使用铬(你应该;)在Windows上),创建快捷方式具有以下标志 – Coldstar