The problem is that if you pass an array for the third parameter to signrawtransaction, only private keys from that array are used. In this case you passed an empty array, so no private keys could be used.
In your case what you really want to do is omit this parameter, and sign using the wallet's private keys automatically. To do this, pass null instead of an empty array. We've also updated the on-site documentation to make this clear, so thanks for bringing it to our attention.