【发布时间】:2018-07-25 11:39:10
【问题描述】:
我必须为这个项目使用节点,它返回为空。
'use strict';
var https = require('https');
var pathString = '/api/SomeAPI/Start?Query=SomeData&Account=USER\sean1234&needed=0';
var request = https.get({
host: "some-host-path",
path: pathString,
header: {'Content-Type': 'application/json'}
}, function(response) {
var json = "";
response.on('data', function(chunk) {
json += chunk;
console.log("json is: " + json);
});
response.on('end', function() {
var jsonData = JSON.parse(json);
var count = 0;
var reply = "";
var keys;
console.log("jsonData is: " +jsonData);
console.log("Object.keys(jsonData) is: " + Object.keys(jsonData));
console.log("Object.keys(jsonData[0]) is: " + Object.keys(jsonData[0]));
//console.log("Object.keys(jsonData[0].SomeData is: " + Object.keys(jsonData[0].SomeData));
//The previous line raises an Error: TypeError: Cannot convert undefined or null to object
console.log("\njsonData[0].SomeData: " +jsonData[0].SomeData);
count = jsonData[0].SomeData;
console.log("JSON.stringify(count): " + JSON.stringify(count));
});
});
以上node.js代码的日志如下:
json is: [{"SomeData":null}]
jsonData is: [object Object]
Object.keys(jsonData) is: 0
Object.keys(jsonData[0]) is: SomeData
jsonData[0].SomeData: null
JSON.stringify(count): null
如您所见,它们返回为 null,但是当我这次尝试使用 Python 访问相同的 API 时,它返回了预期的正确值:
import json
import requests
api_url = 'some-api-url'
response = requests.get(api_url, headers={'Content-Type': 'application/json'})
print(response.status_code)
loaded = json.loads(response.content.decode('utf-8'))
print(loaded)
来自上述 Python 代码的日志:
200
[{'SomeData': 2893}]
我别无选择,只能为这个项目使用节点。我错过了什么?这里似乎有什么问题?
附:如果我没有明确表达我的观点,我对上面的 Node 和 Python 代码使用完全相同的 API。
【问题讨论】:
-
根据this example,您应该可以调用
https.get('some_api_url', function(){...}),而不是传递主机和路径 -
@barbsan 我将其更改为该格式,仍然是相同的 API 响应。
-
你比较过这两个查询的标题吗?
-
@barbsan 我没有,我该怎么做?
-
您是仅在控制台还是某些浏览器中运行这些项目?或者你可以添加到js查询头
'Content-Type': 'application/json'(我看到它是在python代码中设置的,但不是在js中)
标签: javascript python node.js python-3.x