0

这个想法是从 NS 连接到外部系统并从 https 响应中获取令牌。首先,我将这对(登录名,密码)转换为base64,然后我创建了一个包含特定格式的授权参数的标头,最后我发送了我的https请求。但是返回的响应代码是 406 而不是 200 :/ 。

下面是我的代码结构的示例

var stringInput = "email:password";
		
		var base64EncodedString = encode.convert({
			string: stringInput,
			inputEncoding: encode.Encoding.UTF_8,
			outputEncoding: encode.Encoding.BASE_64
		});

		var auth = 'Basic ' + base64EncodedString;
		var _headers = false;
		_headers = {
				Authorization: auth
		}; 
		var url_ = 'https:/..../api/auth/token';
    
			var  auth_resp = https.get({
				url: url_,
				headers: _headers
		});
    
    if (auth_resp.code == 200) {
			
		return  JSON.parse(auth_resp.body);
    }

你有什么想法吗!非常感谢:D

4

2 回答 2

0

我必须为其他 NS 开发人员发布我的解决方案,非常感谢 @JonLamb 和 @bknights 提供的帮助我的答案!

我的代码现在可以工作了!

var stringInput = "email:password";
		
		var base64EncodedString = encode.convert({
			string: stringInput,
			inputEncoding: encode.Encoding.UTF_8,
			outputEncoding: encode.Encoding.BASE_64
		});

		var auth = 'Basic ' + base64EncodedString;
		var _headers = false;
		_headers = {
        'Accept': 'application/json',
				'authorization': auth
		}; 
		var url_ = 'https:/..../api/auth/token';
    
			var  auth_resp = https.get({
				url: url_,
				headers: _headers
		});
    
    if (auth_resp.code == 200) {
			
		return  JSON.parse(auth_resp.body);
    }

于 2018-07-20T10:14:27.990 回答
0

请查看406错误的含义

然后考虑您尝试连接的系统的 api 文档。您可能需要一个 Accept 标头,或者接收服务器可能配置错误,它们不接受 GET 请求,应该返回 405。

最后,我在您的示例中假设:https:/..../api/auth/token....真实主机名的替代品。否则,您的响应将是来自 Netsuite 本身的某种相对响应。

于 2018-07-19T16:55:36.377 回答