The problem you have is that you are trying to do the networking from the main thread. That is the reason you got this Exception:
The exception that is thrown when an application attempts to perform a networking operation on its main thread.
==> stick to your first idea and keep doing that from an AsyncTask to keep your app responsive. This counts also for BroadcastReceivers, see this guide here:
The specific constraint on BroadcastReceiver execution time emphasizes what broadcast receivers are meant to do: small, discrete amounts of work in the background such as saving a setting or registering a Notification. So as with other methods called in the UI thread, applications should avoid potentially long-running operations or calculations in a broadcast receiver.