2

NodeJS サーバーで JSON-RPC 経由で POST リクエストを実行しようとしています。次の curl コマンドを変換します。

curl -X POST --data '{"jsonrpc":"2.0","method":"personal_newAccount","params":["pass"],"id":74}' http://localhost:8545

NodeJSで私は受け取り続けます:

200 {"id":-1,"jsonrpc":"2.0","error":{"code":-32600,"message":"Could not decode request"}}

ヘッダーで Content-Type を指定しています。私が指定していないことと、それを追加する方法を誰かが指摘できれば、大歓迎です。

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();
})
4

3 に答える 3

2

formapplication/x-www-url-encodedJSONではなくリクエスト用です。代わりに次のオプションを試してください。

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 として自動的に解析するように設定することもできます。

于 2015-08-11T02:59:12.520 に答える
2

--headerオプションがありません:

curl --request POST \
    --header 'Content-type: application/json' \
    --data '{"jsonrpc":"2.0","method":"personal_newAccount","params":["pass"],"id":74}' \
    http://localhost:8545
于 2015-09-05T15:13:15.897 に答える
0

「personal_newAccount」とEthereum Docsの残りのオプションを使用するには、必要な API でサーバーを起動する必要があります。

--rpcapi "personal,eth,web3"
于 2016-06-20T13:10:49.837 に答える