Catan - Rules Lawyering the behavior of the "Commercial Harbor" Progress Card
In a tournament, player D may get away with it; but he definitely wouldn’t at my house, or during any games I’ve played with friends. 

In a game that involves open negotiation and trade, intent is an important factor. When a player asks “anyone have a sheep” and anther responds “Sure. For a wheat?” Both players have to infer from the language that the other is offering a specific resource for trade. So it would be illegal to have the players pass a card to each other after that dialog, and for one to pass something other than what is expected. 

Similar case here. When player A asked “do you have a commodity card” the player was obviously asking in reference to the commercial harbor card he just played; in order to take/trade the commodity. That should have been obvious to all people based on the language used.

The rules never clarify what specific language is allowed to be used to convey what specific actions. The play group must decide that, based on if the language was clear enough to convey the intent. In this case, that language combined with he playing of commercial harbor should be sufficient to convey the intent. Thus it’s as good as “I’ll give you this resource for a commodity that you have”.