He may be getting frustrated when you try to "make him" ask for it. I think this is a great idea, the methods might just be a little off. My job is primarily developing language in young children in an early intervention setting (I work with kids with autism) and this is what we do... it's called the "1, 2, 3, deliver" method. So, say your son really wants a train. You know he wants it because he indicates his motivation for the item in some way. You hold the item out, and say "train" three times to try to elicit an echoic response. If, by the third time, he does not repeat the word, give it to him anyway and again repeat "train." If he makes any attempt to say the word, you can give him a whole bunch of trains and cheer for him a lot! If he doesn't say anything, you can just give him one train, or let him play with it for a shorter amount of time. The idea is to reduce his frustration levels surrounding talking, and to teach him that talking gets him awesome stuff!
Another tip is to make sure his motivation for the item is really high. Until kids learn the "I talk, I get" concept, it may seem to difficult for him and he'll just give up. So, my suggestion would be to only use this method when you are sure that he REALLY wants what you are asking him to ask for.
This is just my suggestion based on my experience, but I would also definitely get him going in ST.
Good luck!