1. "I have been to London." is correct and means that you have visited London in the past but are no longer there now.
2. "I have been in London." is correct if someone asks you "Where have you been?" but "in London" is usually accompanied with an adverb indicating a duration of time. So for instance, "I have been in London for a month now." or "I have been in London for two weeks."