【问题标题】:NetSuite https.post() method response is giving Error "Unexpected character encountered while parsing value: S. Path '', line 0, position 0"NetSuite https.post() 方法响应给出错误“解析值时遇到意外字符:S. Path '', line 0, position 0”
【发布时间】:2021-01-17 21:31:47
【问题描述】:

我正在尝试使用“N/https”模块 https.post() 方法将以下 JSON 数据请求发送到第 3 方系统。

我得到的响应代码为“200”,错误消息“解析值时遇到意外字符:S. Path '', line 0, position 0”

请参考我下面给出的代码

var requestData = {
    "terminal": "345678",
    "user": "TestUser1234",
    "password": "XXXXXX",
    "Currency": "USD",
    "Total": "25",
    "GoodURL": "https://gatewayxx.test.com/sandbox/landingpage",
    "Language": "EN"
};

log.debug('Typeof - RequestData: ', typeof requestData);

var headerObj = new Array();
headerObj['Content-Type'] = 'application/json';
headerObj['Accept'] = 'application/json';

var response = https.post({
    url: "https://gatewayxx.test.com",
    body: requestData
});

HTTPS POST 响应消息:

{
    "type": "http.ClientResponse",
    "code": 200,
    "headers": {
        "Cache-Control": "private",
        "Server": "Microsoft-IIS/7.5",
        "Content-Length": "152",
        "Date": "Fri, 02 Oct 2020 05:44:47 GMT",
        "Content-Type": "text/html; charset=utf-8",
        "Via": "1.1 mono002"
    },
    "body": "{\"URL\":\"\",\"ConfirmationKey\":\"\",\"Error\":{\"ErrCode\":599,\"ErrMsg\":\"Unexpected character encountered while parsing value: S. Path '', line 0, position 0.\"}}"
}

我在 JSON 验证器中检查了我的请求数据,其中没有错误。同样在代码中,我使用 typeof 属性对其进行了验证。它也将其显示为“对象”。

此外,如果您注意到响应消息,它会将响应“Content-Type”作为“text/html”而不是 JSON 数据给出。

我不确定我在发送 JSON 数据时犯了什么错误,谁能帮我理解这个问题。

非常感谢。

【问题讨论】:

    标签: javascript json https netsuite suitescript2.0


    【解决方案1】:

    您将 JSON 数据指定为标头中的 Content-Type,但您在正文中传递了一个 JavaScript 对象。您需要将对象字符串化为 JSON 字符串:

    var response = https.post({
        url: "https://gatewayxx.test.com",
        body: JSON.stringify(requestData)
    });
    

    此外,正如 bluehank 所指出的,您没有随请求一起发送标头 - 您可能的意思是:

    var response = https.post({
        url: "https://gatewayxx.test.com",
        body: JSON.stringify(requestData),
        headers: headerObj
    });
    

    【讨论】:

    • 嗨,氪,非常感谢您的快速回复。你是对的,我正在传递 Javascript 对象,并在标题中将其提及为“JSON”格式。我认为 JSON 和 JS 对象是相同的。现在我尝试使用 JSON.stringify() 它工作得很好。再次感谢您的帮助。
    【解决方案2】:

    您似乎为您的请求创建了一个标头,但最终您没有在发布请求中使用它。有什么特别的原因吗?

    当您收到 200 响应代码时,这意味着 POST 请求已正确通过。然而,无论你想要得到什么都是窃听器。更具体地说,您会得到 599 错误代码,该代码通常用于大多数代理的超时。所以问题可能不是来自您,而是来自您正在使用的 API

    【讨论】:

    • 嗨,bluehank,你是对的。我错过了在我的帖子请求中添加标题。最初我在你提到的脚本中使用过。我收到“意外的 599 错误代码”。所以我删除了标题并尝试了它。非常感谢您的快速响应。
    猜你喜欢
    • 1970-01-01
    • 2022-11-05
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    相关资源
    最近更新 更多