无法将python请求移动到node.js请求

时间:2017-05-28 19:08:46

标签: javascript node.js

所以我目前在python中有正常运行的代码

import requests
import json
address = "*address here*"
viewkey = "*viewkey here*"
headers = {'content-type': 'application/json'}
url = "https://api.mymonero.com:8443/get_address_txs"

data = {"address":address,"view_key":viewkey}
data = json.dumps(data)


response = requests.post(url, data=data, headers=headers)
print(response.text)

我试图转移到nodejs以将其与我编写的另一个程序集成

var request = require('request');

var options = {
  url: 'https://api.mymonero.com:8443/get_address_txs',
  headers: {'content-type': 'application/json'},
  data: JSON.stringify({
      address:"address",
      viewkey:"viewkey"
  })
};

request.post(options,function(error, response, body) {
  console.log(body);
})

我认为代码是完全相同的,但显然我没有从服务器获得第二段代码的错误。请有人帮我迁移吗?

注意:我知道python中的请求有一个json属性,为了清楚起见,我已经用python这样写了它。

对于记录,我从javascript获得的响应是​​:

{
  "Error": "Problems parsing JSON"
}

当我从python:

{
  "total_received": "152840132538",
  "scanned_height": 2589644,
  "scanned_block_height": 1320308,
  "start_height": 2586111,
  ...
}

3 个答案:

答案 0 :(得分:2)

不要对你的消息进行字符串化。应该是它。

答案 1 :(得分:1)

在你的json中,在python中,键是view_key,在javascript中它是view key

此外,请求库的选项中没有data键。您可以使用body设置原始正文。如果您使用json,则正文将是您传递的字典的子代表,并为您设置Content-Type标题。

答案 2 :(得分:0)

正确的我是一个偶然的天才我不知道为什么我现在的方法不起作用,但我提出的解决方案是:

var request = require('request');

var options = {
  url: 'https://api.mymonero.com:8443/get_address_txs',
  headers: {'content-type': 'application/json'},
  json: {
      "address":"*address*",
      "view_key":"*viewkey*"
  }
};

request.post(options,function(error, response, body) {
  console.log(body);
})

不知道为什么会有效,但嘿,生活中非常感谢你的建议。