I had this problem on my 640 DS and on my Galaxy S3 when visiting certain Mariott hotels.
The problem was the hotel router/access point was timing out (or my phone was) after requesting an address.
The only way around this that seemed consistent:
- go into airplane mode
- reboot
- stay in airplane mode until it was powered on and services had started,
- disable airplane mode
I was then able to connect and the browser would open up and run to the local login screen.
Someone else on a Mariott forum a while back said it was an issue with their dhcp-auth not releasing dhcp addresses quickly enough.