I am trying RPC request to bitcoind node,using Kotlin. My code looks like
import khttp.delete as httpDelete
val node_url = "http://rpcusr:[email protected]:18443"
val json_resp = khttp.post(url = node_url,
headers = mapOf("Content-Type" to "application/json"), //also tried application.json and text/plain
json = mapOf("id" to "curltext","jsonrpc" to 1,"method" to "getblockchaininfo","params" to arrayOf("")))
println(json_resp.text)
and its output -->
<HTML>
<HEAD>
<TITLE>Error</TITLE>
<META HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=ISO-8859-1'>
</HEAD>
<BODY><H1>401 Unauthorized.</H1></BODY>
</HTML>
bitcoin.conf -->
rpcuser=rpcusr
rpcpassword=rpcpass
rpcallowip=0.0.0.0/0
server=1
Using curl i am getting desired output
CURL command-->
curl -v --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "getblockchaininfo", "params": [] }' -H 'content-type: text/plain;' http://abc:[email protected]:18443
o/p -->
{"result":{"chain":"regtest","blocks":0,"headers":0,"bestblockhash":"0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206","difficulty":4.656542373906925e-10,"mediantime":1296688602,"verificationprogress":1,"initialblockdownload":true,"chainwork":"0000000000000000000000000000000000000000000000000000000000000002","size_on_disk":293,"pruned":false,"softforks":[{"id":"bip34","version":2,"reject":{"status":false}},{"id":"bip66","version":3,"reject":{"status":false}},{"id":"bip65","version":4,"reject":{"status":false}}],"bip9_softforks":{"csv":{"status":"defined","startTime":0,"timeout":9223372036854775807,"since":0},"segwit":{"status":"active","startTime":-1,"timeout":9223372036854775807,"since":0}},"warnings":""},"error":null,"id":"curltest"}
The reason why i am asking this question on this forum is, i took the same approach to get rpc response from Ethereum node and i am getting proper response,the error is occuring only with bitcoin & litecoin node
Any clue why it is behaving this way ?
mapOf("Contenet-Type" to "application.json"),
. Try changing that toContent-Type
. If it still doesn't work, tryapplication/json
as well.