On Fri, 2006-01-06 at 08:15 +0100, Jasper van Zandbeek wrote: > The port number specified with calling setHost of HostConfiguration is the > port used for the connection and the port given in the Host request header. > So in your example, the connection is to localhost:100 and the Host header is > Host: localhost:100. In the example I've given, the connection is to > localhost:80 and the Host header is Host: localhost:100. > > It is currently not possible to have a different port number for the > connection and in the Host header. The provided patch adds this functionality. > > Jasper >
Jasper, I believe I can vaguely tell the difference between numbers 80 and 100. The point I am trying to make is that there is no such thing as a 'virtual' port. The target server either listens on a port or it does not. Take a look at the HTTP spec. There is no mentioning of the concept of a virtual port in it Oleg > -----Oorspronkelijk bericht----- > Van: Oleg Kalnichevski [mailto:[EMAIL PROTECTED] > Verzonden: do 5-1-2006 17:16 > Aan: [email protected] > CC: > Onderwerp: Re: [PATCH] HttpClient: possibility to specify port number > in Host headers > > > > On Thu, Jan 05, 2006 at 03:36:04PM +0100, Jasper van Zandbeek wrote: > > Hello, > > > > The attached patch adds the possibility to specify the port number > for virtual hosts. > > > > HttpClient currently uses the port number of the connection in the > Host request header if the port number is different from the default port > number for the protocol. Currently it isn't possible to specify a port number > different from the port number of the connection. This patch adds this > functionality. > > > > According to the HTTP/1.1 specification, the port number specified in > the Host request header doesn't need to be the same as the port number of the > connection. Some web servers, e.g. Apache, ignore a different port number, > but e.g. the application server WebSphere allows the port number of the > connection and the port number in the Host header to be different. > > > > This patch allows users of HttpClient to use a different port number > for the Host request header if the webserver they connect to supports this. > > > > Here's a code snippet that uses the patched code: > > > > HttpClient httpClient = new HttpClient(); > > HttpMethod method = new GetMethod(); > > HostConfiguration hostConfiguration = new HostConfiguration(); > > hostConfiguration.setHost("localhost", 80, "http"); > > HostParams params = new HostParams(); > > params.setVirtualHost("localhost"); > > params.setVirtualHostPort(100); > > hostConfiguration.setParams(params); > > httpClient.executeMethod(hostConfiguration, method); > > System.out.println(method.getResponseBodyAsString()); > > method.releaseConnection(); > > > > Kind regards, > > > > Jasper van Zandbeek > > > > What's wrong with this? > > HttpClient httpClient = new HttpClient(); > HttpMethod method = new GetMethod(); > HostConfiguration hostConfiguration = new HostConfiguration(); > hostConfiguration.setHost("localhost", 100, "http"); > HostParams params = new HostParams(); > params.setVirtualHost("localhost"); > hostConfiguration.setParams(params); > httpClient.executeMethod(hostConfiguration, method); > System.out.println(method.getResponseBodyAsString()); > method.releaseConnection(); > > Oleg > > > > > <<patchfile.txt>> > > Content-Description: patchfile.txt > > --- org\apache\commons\httpclient\HttpMethodBase.java.orig > 2006-01-05 04:03:48.000000000 +0100 > > +++ org\apache\commons\httpclient\HttpMethodBase.java 2006-01-05 > 14:02:22.108177600 +0100 > > @@ -1221,7 +1221,13 @@ > > } else { > > host = conn.getHost(); > > } > > - int port = conn.getPort(); > > + int port = this.params.getVirtualHostPort(); > > + if (port == -1) { > > + port = conn.getPort(); > > + } > > + else { > > + LOG.debug("Using virtual host port: " + port); > > + } > > > > // Note: RFC 2616 uses the term "internet host name" for > what goes on the > > // host line. It would seem to imply that host should be > blank if the > > --- org\apache\commons\httpclient\params\HostParams.java.orig > 2006-01-05 04:03:48.000000000 +0100 > > +++ org\apache\commons\httpclient\params\HostParams.java > 2006-01-05 14:01:37.857044800 +0100 > > @@ -97,5 +97,23 @@ > > public String getVirtualHost() { > > return (String) getParameter(HttpMethodParams.VIRTUAL_HOST); > > } > > + > > + /** > > + * Sets the virtual host port. > > + * > > + * @param port The port > > + */ > > + public void setVirtualHostPort(int port) { > > + setIntParameter(HttpMethodParams.VIRTUAL_HOST_PORT, port); > > + } > > + > > + /** > > + * Returns the virtual host port. > > + * > > + * @return The virtual host port > > + */ > > + public int getVirtualHostPort() { > > + return getIntParameter(HttpMethodParams.VIRTUAL_HOST_PORT, > -1); > > + } > > > > } > > --- org\apache\commons\httpclient\params\HttpMethodParams.java.orig > 2006-01-05 04:03:48.000000000 +0100 > > +++ org\apache\commons\httpclient\params\HttpMethodParams.java > 2006-01-05 14:10:34.334917000 +0100 > > @@ -265,6 +265,14 @@ > > public static final String VIRTUAL_HOST = "http.virtual-host"; > > > > /** > > + * Defines the virtual host port. > > + * <p> > > + * This parameter expects a value of type (@link Integer). > > + * </p> > > + */ > > + public static final String VIRTUAL_HOST_PORT = > "http.virtual-host-port"; > > + > > + /** > > * Sets the value to use as the multipart boundary. > > * <p> > > * This parameter expects a value if type [EMAIL PROTECTED] > String}. > > @@ -459,6 +467,24 @@ > > return (String) getParameter(VIRTUAL_HOST); > > } > > > > + /** > > + * Sets the virtual host port. > > + * > > + * @param port The host port > > + */ > > + public void setVirtualHostPort(int port) { > > + setIntParameter(VIRTUAL_HOST_PORT, port); > > + } > > + > > + /** > > + * Returns the virtual host port. > > + * > > + * @return The virutal host port. > > + */ > > + public int getVirtualHostPort() { > > + return getIntParameter(VIRTUAL_HOST_PORT, -1); > > + } > > + > > private static final String[] PROTOCOL_STRICTNESS_PARAMETERS = { > > UNAMBIGUOUS_STATUS_LINE, > > SINGLE_COOKIE_HEADER, > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
