Author

Topic: API C# call to sendtoaddress fails! (Read 1308 times)

legendary
Activity: 1498
Merit: 1000
October 09, 2012, 08:36:06 PM
#6
Code:
     HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://localhost.:8332");
that should be
Code:
     HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://localhost:8332");
or
Code:
     HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://127.0.0.1:8332");

Thanks Gweedo, but that actually doesnt matter "localhost." will resolve to "localhost" will resolve to 127.0.0.1.  The 500 error happens on the GetRequest and works fine for the listsinceblock, getinfo, getbalance, etc. Just doesnt seem to work so far for sendtoaddress, sendmany, walletpassphrase - ive given up trying to see which works and which doesnt until I can get some clarity as to what other fields I might be missing.

Sounds like your wallet is probably encrypted, so you need to pass in the wallet password as well.

Well, it wasn't at first.  I did put a passphrase on it now.  But even when I call walletpassphrase, it fails.  Does anyone have a working c# solution project they can share with me?

Thanks

https://github.com/mb300sd/Bitcoin.NET
newbie
Activity: 4
Merit: 0
October 09, 2012, 08:34:31 PM
#5
Code:
     HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://localhost.:8332");
that should be
Code:
     HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://localhost:8332");
or
Code:
     HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://127.0.0.1:8332");

Thanks Gweedo, but that actually doesnt matter "localhost." will resolve to "localhost" will resolve to 127.0.0.1.  The 500 error happens on the GetRequest and works fine for the listsinceblock, getinfo, getbalance, etc. Just doesnt seem to work so far for sendtoaddress, sendmany, walletpassphrase - ive given up trying to see which works and which doesnt until I can get some clarity as to what other fields I might be missing.

Sounds like your wallet is probably encrypted, so you need to pass in the wallet password as well.

Well, it wasn't at first.  I did put a passphrase on it now.  But even when I call walletpassphrase, it fails.  Does anyone have a working c# solution project they can share with me?

Thanks
legendary
Activity: 1498
Merit: 1000
October 09, 2012, 05:01:30 PM
#4
Code:
     HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://localhost.:8332");
that should be
Code:
     HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://localhost:8332");
or
Code:
     HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://127.0.0.1:8332");

Thanks Gweedo, but that actually doesnt matter "localhost." will resolve to "localhost" will resolve to 127.0.0.1.  The 500 error happens on the GetRequest and works fine for the listsinceblock, getinfo, getbalance, etc. Just doesnt seem to work so far for sendtoaddress, sendmany, walletpassphrase - ive given up trying to see which works and which doesnt until I can get some clarity as to what other fields I might be missing.

Sounds like your wallet is probably encrypted, so you need to pass in the wallet password as well.
newbie
Activity: 4
Merit: 0
October 09, 2012, 04:12:13 PM
#3
Code:
     HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://localhost.:8332");
that should be
Code:
     HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://localhost:8332");
or
Code:
     HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://127.0.0.1:8332");

Thanks Gweedo, but that actually doesnt matter "localhost." will resolve to "localhost" will resolve to 127.0.0.1.  The 500 error happens on the GetRequest and works fine for the listsinceblock, getinfo, getbalance, etc. Just doesnt seem to work so far for sendtoaddress, sendmany, walletpassphrase - ive given up trying to see which works and which doesnt until I can get some clarity as to what other fields I might be missing.
legendary
Activity: 1498
Merit: 1000
October 09, 2012, 04:09:18 PM
#2
Code:
     HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://localhost.:8332");
that should be
Code:
     HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://localhost:8332");
or
Code:
     HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://127.0.0.1:8332");
newbie
Activity: 4
Merit: 0
October 09, 2012, 04:05:22 PM
#1
Hi..  Im hoping someone here knows what i am doing wrong. Some of my calls work, but most return 500, so im confused what is wrong.

I really appreciate the help and feedback.

Here is code that works:

Code:
            HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://localhost.:8332");
            webRequest.Credentials = new NetworkCredential("bitcoinrpc", "mypassword");
            /// 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", "listsinceblock"));

            JArray props = new JArray();
            if (_lastBlock != "")
            {
                props.Add(_lastBlock);
            }
            joe.Add(new JProperty("params", props));
            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();

Basically, im looping and calling this to find new transactions that I am receiving.

However, when I go to send a transaction out:

Code:
            HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://localhost.:8332");
            webRequest.Credentials = new NetworkCredential("bitcoinrpc", "mypassword");
            /// 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", "sendtoaddress"));

            JArray props = new JArray();
            props.Add("1diceDCd27Cc22HV3qPNZKwGnZ8QwhLTc");
            props.Add("0.001");
            joe.Add(new JProperty("params", props));
            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();

I get a 500 error..  can anyone tell me what I am doing wrong?  I am able to make the call from the commandline with no problem.  I'm stumped and can't find any help anywhere on what could be wrong.

Thanks!

Kingsfan
Jump to: