When issuing a POST request over https through a proxy, jmeter adds the Content-Length: header fromo the POST request to the CONNECT request to the proxy. This is invalid. Some proxies (but not squid) will then wait for the content while jmeter waits for the "200 Connection established" message from the proxy. The connection hangs. A sample request from a tcpdump is attached.
Created attachment 18124 [details] sample request
Which HTTP sampler did you use - was that the default, or Apache HTTPClient?
(In reply to comment #2) > Which HTTP sampler did you use - was that the default, or Apache HTTPClient? Where can I see that? I found <stringProp name="TestElement.test_class">org.apache.jmeter.protocol. http.sampler.HTTPSampler</stringProp> in the test plan file.
It says "HTTP Request HTTPClient" on the GUI if you are using the new sampler, otherwise just "HTTP Request" The Apache classname is HTTPSampler2, so you are using the default (Java) sampler. Does the problem also occur with HTTP requests?
It works with http. In this case, it sends the POST request with all headers directly to the proxy server, which is correct. There is no CONNECT request with http.
The HTTPSampler does not do any special processing to handle proxy servers. It does not issue a CONNECT request, as far as I can see. This is all handled by the Java HTTP implementation, so it would seem that the problem is in the Java code. Not sure what to suggest. It's possible that JMeter is generating the headers incorrectly for use with HTTPS over a proxy, but somehow the same headers are OK for HTTP+proxy. I've no idea what to change to fix this.
Ohh, you are right, this is a java problem. After some more googling I found these bug reports: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6226610 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6208335 The first one seems to imply that it is fixed in java 1.5. Thanks for looking into it.
Thanks for the bug pointers. I'll see about adding a note to the documentation. If you can't upgrade to 1.5, or that does not work either, you could try using the Apache HTTPClient implementation instead. There are some issues with this in 2.1.1 which are fixed in the current nightly, so you may need to use that.
Updated Changes/"known bugs" to reference this bug.
This issue has been migrated to GitHub: https://github.com/apache/jmeter/issues/1714