We like booking directly with the ship on line as we can see the choices of the rooms available and pick the best one for us. We have also used Expedia on line and that worked as well. Sometimes after we figure out the room we want we call direct and tell them the room # we want.

And if you book with the cruise line and have any problems, you're on your own.

Plus, if you book with the cruise line or Expedia, they cannot answer any questions about the ports of call or pretty much anything else because they're not certified travel agents and almost all of them have never even been on a cruise.

Best to do your homework, decide what cruise & cabin you want, then talk to your agent and let them do all the work for you. Plus, if you have any problems, they'll do everything necessary to make it right so you don't have to stress over it or spend time trying to talk to someone who won't help you.