On Tue, 2008-09-16 at 12:45 -0700, Subashini S wrote: > Hi, > > I’ve come across a scenario where the location: > http://www.nwsource.com/travel/scr/tf_destination.cfm? When requested in IE > browser comes back with the following response code: > GET http://www.nwsource.com/travel/scr/tf_destination.cfm? 302 Moved > Temporarily to '' > When the successive requests were studied, IE browser seems to make requests > as follows: > > GET http://www.nwsource.com/travel/scr/tf_destination.cfm? 302 Moved > Temporarily to '' > GET http://www.nwsource.com/travel/scr/ 302 Moved > Temporarily to /travel/ > GET http://www.nwsource.com/travel/ 301 Moved > Permanently to http://www.nwsource.com/travel > So finally the browser renders the page: http://www.nwsource.com/travel. > However with httpclient, when the first request is made, the response header > comes back with blank value for location. > GET http://www.nwsource.com/travel/scr/tf_destination.cfm? 302 Moved > Temporarily to '' > Whenever there is a redirection to a relative url, the url is absolutized and > fetched. In our case however, the redirected url happens to be a blank string > and hence when absolutizing, the original url is returned. And hence, goes > into infinite redirection. > > if (redirectUri.isRelativeURI()) { > if > (this.params.isParameterTrue(HttpClientParams.REJECT_RELATIVE_REDIRECT)) { > LOG.warn("Relative redirect location '" + location + "' not > allowed"); > return false; > } else { > //location is incomplete, use current values for defaults > LOG.debug("Redirect URI is not absolute - parsing as relative"); > redirectUri = new URI(currentUri, redirectUri); > } > > > The control comes to the else part of this snippet in > org.apache.commons.httpclient.HttpMethodDirector class > and we are getting the following output: > Narrowly avoided an infinite loop in execute > caught org.apache.commons.httpclient.RedirectException: Maximum redirects > (100) exceeded > > Has anyone come across a similar situation where the redirect location is > blank. If so is it possible to emulate browser behaviour without a code > change in httpclient? >
Subashini, If upgrading to HttpClient 4.0 is an option, you could plug in a custom RedirectHandler impl in order to emulate IE compatible behavior http://hc.apache.org/httpcomponents-client/httpclient/apidocs/org/apache/http/client/RedirectHandler.html With HttpClient 3.x you do not have that many options. The only possibility would be disabling automatic redirects and handling all redirects manually. Oleg > Thanks in advance, > Subashini > > > > > > --------------------------------------------------------------------- > 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]
