curl - 使用 Rust 的比特币 cURL/JSON-RPC

标签 curl rust bitcoin json-rpc

我正在用 RUST 编写代码,使用 JSON-RPC 从 bitcoin-core 查询数据。我正在使用这个 curl-rust ,但在运行 cargo run 时没有显示输出。

extern crate curl;

use std::io::Read;
use curl::easy::{Easy, List};

fn main() {
    let mut data = r#"{"jsonrpc":"1.0","id":"curltext","method":"getrawtransaction","params":["f8ae07a1292136def6d79d5aef15aacfa1aefa2db153037b878b06f00e2cd051", 2]}"#.as_bytes();

    let mut easy = Easy::new();
    easy.url("http://192.168.X.X:8332").unwrap();
    easy.post(true).unwrap();
    easy.post_field_size(data.len() as u64).unwrap();

    let mut list = List::new();
    list.append("Authorization: Basic some_user:some_password").unwrap();
    easy.http_headers(list).unwrap();

    let mut transfer = easy.transfer();
    transfer.read_function(|buf| {
        Ok(data.read(buf).unwrap_or(0))
    }).unwrap();
    transfer.perform().unwrap();
}

我希望代码能提供一些输出,为什么不是这样?

最佳答案

你错过了 write_function称呼。一个例子:

use std::io::Read;

use curl::easy::Easy;

fn main() {
    let mut body = r#"{"jsonrpc":"2.0","method":"guru.test","params":["Guru"],"id":123}"#.as_bytes();

    let mut easy = Easy::new();
    easy.url("https://gurujsonrpc.appspot.com/guru").unwrap();
    easy.post(true).unwrap();
    easy.post_field_size(body.len() as u64).unwrap();

    let mut data = Vec::new();
    {
        // Create transfer in separate scope ...
        let mut transfer = easy.transfer();

        // Request body
        transfer.read_function(|buf| {
            Ok(body.read(buf).unwrap_or(0))
        }).unwrap();

        // Response body
        transfer.write_function(|new_data| {
            data.extend_from_slice(new_data);
            Ok(new_data.len())
        }).unwrap();

        transfer.perform().unwrap();
        // .. to force drop it here, so we can use easy.response_code()
    }

    println!("{}", easy.response_code().unwrap());
    println!("Received {} bytes", data.len());
    if !data.is_empty() {
        println!("Bytes: {:?}", data);
        println!("As string: {}", String::from_utf8_lossy(&data));
    }
}

关于curl - 使用 Rust 的比特币 cURL/JSON-RPC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57691926/

相关文章:

rust - 如何将红 bean 杉组件分离到不同的文件中?

bash - 使用 curl -L https ://get. rvm.io | 得到 60 个错误bash -s

php - USPS API 返回错误 - XML 中没有错误

rust - 是否可以扩展单个宏而不是整个文件?

algorithm - Rust - 如何搜索 vec 的子集 - 并找到 subvec 的起始索引?

node.js - 验证交易时出错。输入总和小于输出。比特核

javascript - 如何使用 bitcoinjs 签署 BlockCypher 交易

c# - 将应用程序中的 KeyPath 与 Bip44 钱包的 Wallet32 Keypath 相匹配

php - 使用包含 GET url 的参数的 CURL Get 请求

javascript - 无法从 http post 方法获取 req.body 属性