On 20 November 2012 12:58, Taoism <[email protected]> wrote: > The port is specified in the HTTP Sampler. As is that the protocol is HTTPS. > > The problem is that the "Location:" header includes both HTTPS and :443 in > the redirect URL and that the receiving server apparently expects that :443 > will be part of the URL even though it is implied by HTTPS (since 443 is the > default port for HTTPS). > > Thus in a BeanShell PostProcessor (in sampler that just ran) or in a > BeanShell PreProcessor (in the next sampler) this happens: > > +-Sampler A > -+-BSH PostProcessor A > +-Sampler B > -+-BSH PreProcessor B > > Sampler A and B both have the port set to 443 and the protocol to HTTPS. > The domain is set in the sampler as well as the path. Previously I was > dynamically grabbing the redirect location and building it up dynamically in > a preprocessor for the next sampler. However, to try and solve this problem > I have reverted to hardcoding the values into the sampler fields. The > problem is when Sampler B executes, it doesn't add the port to the URL: > > //BSH PostProcessor A > url = prev.getRedirectLocation(); > //url is: 'https://domain:443/blah/SSO?qsStuff' > > //BSH PreProcessor B > url = sampler.getUrl() > //url is now 'https://domain/blah/SSO?qsStuff' > > So, the sampler when building the URL is leaving out the port. I assume it > is leaving it out because specifying port 443 AND HTTPS is redundant. > > I have looked through the API thought using the path as the whole URL may > work: > http://jmeter.apache.org/api/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.html#getUrl() > "As a special case, if the path starts with "http[s]://", then the path is > assumed to be the entire URL." > > However, calling setPath() automatically calls parseArguments() and I lose > the query string component. > http://jmeter.apache.org/api/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.html#setPath(java.lang.String) > "Sets the Path attribute of the UrlConfig object Also calls parseArguments > to extract and store any query arguments" > > Which removes that as a possibility.... >
Just tested using the mirror server, and http://localhost:8081/abcd?def&geh shows up as GET /abcd?def&geh HTTP/1.1 Host: localhost:8081 in all 3 implementations, so it does work. > > > -- > View this message in context: > http://jmeter.512774.n5.nabble.com/How-to-force-the-port-to-be-used-in-an-HTTP-Sampler-tp5715344p5715360.html > Sent from the JMeter - User mailing list archive at Nabble.com. > > --------------------------------------------------------------------- > 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]
