【发布时间】:2016-03-16 12:21:34
【问题描述】:
我很可能做错了什么,但不确定是什么。我正在尝试使用 FF 海报测试 NetSuite Restlet(网络服务)。我可以通过在 URL 中传递数据来使用 Get 工作。但是,使用 Put 方法时出现错误。
{"error" : {"code" : "SYNTAX_ERROR", "message" : "SyntaxError: 空 JSON 字符串 (null$lib#3)。"}}
它击中了我下面的 catch 块。我读到要创建或更新我们应该使用 Put 所以不确定为什么 Get 有效但 Put 无效?
function CreateRecord(jsonobject)
{
try
{
nlapiLogExecution('DEBUG', ' in get = ');
var jsonString = JSON.stringify(jsonobject)
nlapiLogExecution('ERROR', 'JSON', jsonString);
// Mandatory
var name = jsonobject["name"];
nlapiLogExecution('DEBUG', ' name = ', name);
var record = nlapiCreateRecord('customrecordtest');
record.setFieldValue('name', name);
var id = nlapiSubmitRecord(record, true);
nlapiLogExecution('DEBUG', 'id = ', id);
return jsonobject;
}
catch (err)
{
nlapiLogExecution('ERROR', 'Error', err.message);
return err.message;
}
}
海报:
https://rest.sandbox.netsuite.com/app/site/hosting/restlet.nl?script=351&deploy=1&name=Restlet测试
【问题讨论】:
-
你能添加你的 Restlet 代码吗?
-
当然。我已经对其进行了压缩以使其更具可读性。
-
从错误看来,错误似乎是由于无效的 JSON 引起的。请检查您作为 PUT 方法的播放负载发送的 JSON
-
但这意味着 Get 也应该失败?
-
PUT 请求不会在 URL 中查找数据。它将在请求本身的正文中查找 JSON。因此,您需要在请求正文中发送一个对象,而不是
&name=Restlet Test,例如{ "name" : "Restlet Test" }