首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于JSON-RPC的NodeJS POST请求

基于JSON-RPC的NodeJS POST请求
EN

Stack Overflow用户
提问于 2015-08-11 10:12:29
回答 3查看 4.6K关注 0票数 2

我正试图在我的NodeJS服务器上通过JSON-RPC执行POST请求。正在转换以下curl命令:

代码语言:javascript
运行
复制
curl -X POST --data '{"jsonrpc":"2.0","method":"personal_newAccount","params":["pass"],"id":74}' http://localhost:8545

在NodeJS中,我不断收到:

代码语言:javascript
运行
复制
200 {"id":-1,"jsonrpc":"2.0","error":{"code":-32600,"message":"Could not decode request"}}

在标题中,我指定了Content-Type。如果有人能指出我没有具体说明什么,以及如何添加它,将不胜感激。

代码语言:javascript
运行
复制
var headers = {
    'User-Agent':       'Super Agent/0.0.1',
    'Content-Type':     'application/json-rpc',
    'Accept':'application/json-rpc'
}

var options = {
    url: "http://localhost:8545",
    method: 'POST',
    headers: headers,
    form: {"jsonrpc":"2.0","method":"personal_newAccount","params":["pass"],"id":1}
}

request(options, function (error, response, body) {
    if (!error && response.statusCode == 200) {
        res.writeHeader(200, {"Content-Type": "text/plain"});
        res.write(res.statusCode.toString() + " " + body);
    }else{
      res.writeHeader(response.statusCode, {"Content-Type": "text/plain"});
      res.write(response.statusCode.toString() + " " + error);
    }
    res.end();
})
EN

回答 3

Stack Overflow用户

发布于 2015-08-11 10:59:13

form是针对application/x-www-url-encoded请求的,而不是JSON。请尝试以下选项:

代码语言:javascript
运行
复制
var options = {
  url: "http://localhost:8545",
  method: 'POST',
  headers: headers,
  body: JSON.stringify({
    jsonrpc: '2.0',
    method: 'personal_newAccount',
    params: ['pass'],
    id: 1
  })
}

您还可以在选项中设置json: true,让request自动将响应解析为JSON。

票数 2
EN

Stack Overflow用户

发布于 2015-09-05 23:13:16

您缺少--header选项:

代码语言:javascript
运行
复制
curl --request POST \
    --header 'Content-type: application/json' \
    --data '{"jsonrpc":"2.0","method":"personal_newAccount","params":["pass"],"id":74}' \
    http://localhost:8545
票数 2
EN

Stack Overflow用户

发布于 2016-06-20 21:10:50

要使用Ethereum Docs中的"personal_newAccount“和rest选项,您需要使用所需的API启动服务器:

代码语言:javascript
运行
复制
--rpcapi "personal,eth,web3"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31932096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档