查看“API reference (JSON-RPC)”的源代码
←
API reference (JSON-RPC)
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于这些用户组的用户使用:trusted、truster、ninja
您必须确认您的电子邮件地址才能编辑页面。请通过
系统设置
设置并确认您的电子邮件地址。
您可以查看与复制此页面的源代码。
== 操控 bitcoin 软件 == 运行 ''bitcoind'' 或 ''bitcoin -server''. 你可以通过命令行或[http://json-rpc.org/wiki/specification| HTTP JSON-RPC] 命令来操控它. 首先你需要创建bitcoin.conf配置文件并设置rpcuser和rpcpassword;详情请查看[[运行Bitcoin]] 示例: $ ./bitcoind bitcoin server starting $ ./bitcoind help # shows the help text RPC调用列表将显示 <!-- A [[Original Bitcoin client/API Calls list|list of RPC calls]] will be shown. --> $ ./bitcoind getbalance 2000.00000 == JSON-RPC == 运行'bitcoin -server'或'bitcoind' 将使bitcoin以[http://json-rpc.org/wiki/specification| HTTP JSON-RPC]服务器模式运行,但与其通信时必须使用[http://zh.wikipedia.org/wiki/HTTP%E5%9F%BA%E6%9C%AC%E8%AE%A4%E8%AF%81|HTTP基本认证],安全起见,默认情况下服务器只接受同一机器上其他进程的连接。如果你的HTTP或JSON库需要你指定已认证的'realm',请使用'jsonrpc'。 <!-- Running Bitcoin with the -server argument (or running bitcoind) tells it to function as a [http://json-rpc.org/wiki/specification| HTTP JSON-RPC] server, but [http://en.wikipedia.org/wiki/Basic_access_authentication Basic access authentication] must be used when communicating with it, and, for security, by default, the server only accepts connections from other processes on the same machine. If your HTTP or JSON library requires you to specify which 'realm' is authenticated, use 'jsonrpc'. --> 0.3.14版之后版本的Bitcoin支持SSL (https) JSON-RPC连接。配置详情请参考[[在官方客户端上允许SSL|本页面]]。 <!-- Bitcoin supports SSL (https) JSON-RPC connections beginning with version 0.3.14. See the [[Enabling SSL on original client daemon|rpcssl wiki page]] for setup instructions and a list of all bitcoin.conf configuration options. --> 你需要和你使用语言对应的[http://json-rpc.org/wiki/implementations|库]来访问服务器 <!-- To access the server you should find a [http://json-rpc.org/wiki/implementations|suitable library] for your language. --> <!-- == Proper money handling == See the [[Proper Money Handling (JSON-RPC)|proper money handling page]] for notes on avoiding rounding errors when handling bitcoin values. --> == Python == [http://json-rpc.org/wiki/python-json-rpc python-jsonrpc] 是JSON-RPC在Python上的官方实现。它自动生成RPC调用的Python方法。但为了支持旧版本的Python,它效率地下。 <!-- It automatically generates Python methods for RPC calls. However, due to its design for supporting old versions of Python, it is also rather inefficient. --> [[User:jgarzik|jgarzik]]创建了[https://github.com/jgarzik/python-bitcoinrpc Python-BitcoinRPC] 分支,它对新版本的Python进行了优化(最低需要 Python 2.6+, 而非3.x). 推荐这个版本。 <!-- [[User:jgarzik|jgarzik]] has forked it as [https://github.com/jgarzik/python-bitcoinrpc Python-BitcoinRPC] and optimized it for current versions (at least Python 2.6+, though not 3.x). Generally, this version is recommended. --> 尽管BitcoinRPC缺少jsonrpc的一些特性,在编写仅使用ServiceProxy类的软件时,两个版本可以使用相同的代码 <!-- While BitcoinRPC lacks a few obscure features from jsonrpc, software using only the ServiceProxy class can be written the same to work with either version the user might choose to install: --> <source lang="python"> from jsonrpc import ServiceProxy access = ServiceProxy("http://user:password@127.0.0.1:8332") access.getinfo() access.listreceivedbyaddress(6) #access.sendtoaddress("11yEmxiMso2RsFVfBcCa616npBvGgxiBX", 10) </source> == Ruby == <source lang="ruby"> =begin Make sure to do: gem install rest-client Usage: h = ServiceProxy.new('http://user:password@127.0.0.1:8332') puts h.getinfo.call puts h.getbalance.call 'accname' =end require 'json' require 'rest_client' class JSONRPCException < RuntimeError def initialize() super() end end class ServiceProxy def initialize(service_url, service_name=nil) @service_url = service_url @service_name = service_name end def method_missing(name, *args, &block) if @service_name != nil name = "%s.%s" % [@service_name, name] end return ServiceProxy.new(@service_url, name) end def respond_to?(sym) end def call(*args) postdata = {"method" => @service_name, "params" => args, "id" => "jsonrpc"}.to_json respdata = RestClient.post @service_url, postdata resp = JSON.parse respdata if resp["error"] != nil raise JSONRPCException.new, resp['error'] end return resp['result'] end end </source> == PHP == 用[http://jsonrpcphp.org/ JSON-RPC PHP]库连接Bitcoin非常简单,例如: <!-- The [http://jsonrpcphp.org/ JSON-RPC PHP] library also makes it very easy to connect to Bitcoin. For example: --> <source lang="php"> require_once 'jsonRPCClient.php'; $bitcoin = new jsonRPCClient('http://user:password@127.0.0.1:8332/'); echo "<pre>\n"; print_r($bitcoin->getinfo()); echo "\n"; echo "Received: ".$bitcoin->getreceivedbylabel("Your Address")."\n"; echo "</pre>"; </source> == Java == 让Java使用HTTP基本认证的最简单方法是创建default Authenticator <!-- The easiest way to tell Java to use HTTP Basic authentication is to set a default Authenticator: --> <source lang="java"> final String rpcuser ="..."; final String rpcpassword ="..."; Authenticator.setDefault(new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication (rpcuser, rpcpassword.toCharArray()); } }); </source> 这样一来,任何JSON-RPC Java库(或 URL POSTs)都可以和Bitcoin 服务器通信了。 <!-- Once that is done, any JSON-RPC library for Java (or ordinary URL POSTs) may be used to communicate with the Bitcoin server. --> == Perl == 用CPAN 的 JSON::RPC 包可以和Bitcoin通信。首先你必须设置客户端证书,例如: <!-- The JSON::RPC package from CPAN can be used to communicate with Bitcoin. You must set the client's credentials; for example: --> <source lang="perl"> use JSON::RPC::Client; use Data::Dumper; my $client = new JSON::RPC::Client; $client->ua->credentials( 'localhost:8332', 'jsonrpc', 'user' => 'password' # REPLACE WITH YOUR bitcoin.conf rpcuser/rpcpassword ); my $uri = 'http://localhost:8332/'; my $obj = { method => 'getinfo', params => [], }; my $res = $client->call( $uri, $obj ); if ($res){ if ($res->is_error) { print "Error : ", $res->error_message; } else { print Dumper($res->result); } } else { print $client->status_line; } </source> == .NET (C#) == <!-- The communication with rpc service can be achieved using the standard httprequest/response objects. A library for serialising and deserialising Json will make your life a lot easier: --> 使用标准的httprequest/response 对象可与rpc服务通信。 用序列化/反序列化Json库可以轻松许多: * JayRock for .NET 4.0 * Json.Net for .NET 2.0 and above 下面的例子使用Json.Net: <source lang="csharp"> HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://localhost.:8332"); webRequest.Credentials = new NetworkCredential("user", "pwd"); /// important, otherwise the service can't desirialse your request properly webRequest.ContentType = "application/json-rpc"; webRequest.Method = "POST"; JObject joe = new JObject(); joe.Add(new JProperty("jsonrpc", "1.0")); joe.Add(new JProperty("id", "1")); joe.Add(new JProperty("method", Method)); // params is a collection values which the method requires.. if (Params.Keys.Count == 0) { joe.Add(new JProperty("params", new JArray())); } else { JArray props = new JArray(); // add the props in the reverse order! for (int i = Params.Keys.Count - 1; i >= 0; i--) { .... // add the params } joe.Add(new JProperty("params", props)); } // serialize json for the request string s = JsonConvert.SerializeObject(joe); byte[] byteArray = Encoding.UTF8.GetBytes(s); webRequest.ContentLength = byteArray.Length; Stream dataStream = webRequest.GetRequestStream(); dataStream.Write(byteArray, 0, byteArray.Length); dataStream.Close(); WebResponse webResponse = webRequest.GetResponse(); ... // deserialze the response </source> == 命令行 (cURL) == <!-- You can also send commands and see results using [http://curl.haxx.se/ cURL] or some other command-line HTTP-fetching utility; for example: --> 用[http://curl.haxx.se/ cURL]或其他命令行HTTP-fetching可以发送命令并查看结果,例如: <source lang="bash"> curl --user user --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "getinfo", "params": [] }' -H 'content-type: text/plain;' http://127.0.0.1:8332/ </source> 你将获得你的rpcpassword,然后你会看到类似下面的信息 <!-- You will be prompted for your rpcpassword, and then will see something like: --> <source lang="javascript"> {"result":{"balance":0.000000000000000,"blocks":59952,"connections":48,"proxy":"","generate":false, "genproclimit":-1,"difficulty":16.61907875185736,"error":null,"id":"curltest"} </source> == 参看 == * [[Original_Bitcoin_client/API_Calls_list|API 调用列表]] * [[运行 Bitcoin]] * [[Lazy API]] [[Category:Articles using content from the old wiki]] [[Category:技术]] [[Category:开发文档]] [[en:API reference (JSON-RPC)]]
返回至
API reference (JSON-RPC)
。
导航菜单
个人工具
创建账户
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息