This approach drops many parts of the URI, including (importantly) the port.

I'd prefer to see something like this:

``` ruby
endpoint = uri.clone
endpoint.user = nil
endpoint.read(:http_basic_authentication => [ uri.user, uri.password ])
```