Better make request

Added host, port, and path parameters to makeRequest. These allow the caller to override the host, port, and path components specified in the url parameter. Also, they allow the caller to send invalid data, such as reserved characters. The url param gets passed to java.net.URI, so it must be a valid uri. The host, port, and path params allow you to get around that.