Bug 43612 - HTTP PUT does not honor request parameters
HTTP PUT does not honor request parameters
Status: RESOLVED FIXED
Product: JMeter
Classification: Unclassified
Component: HTTP
2.3
Other All
: P2 normal (vote)
: ---
Assigned To: JMeter issues mailing list
:
Depends on:
Blocks:
  Show dependency tree
 
Reported: 2007-10-12 07:21 UTC by Greg Smith
Modified: 2007-10-16 11:17 UTC (History)
0 users



Attachments
Tets plan with PUT requests using the two HTTP samplers (6.93 KB, text/plain)
2007-10-15 13:00 UTC, Alf Hogemark
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Greg Smith 2007-10-12 07:21:27 UTC
When using the HTTP PUT method on an HTTP Sampler, the request parameters are
not honored.  If request parameters are specified, they are ignored and not
placed in the request.

The behavior of PUT should be similar to POST -- if request parameters are
specified, they should be included in the body of the request.

With new REST based applications, the use of the other HTTP verbs are much more
common, with PUT being a standard way to update data within REST a rest app.

Allowing PUT to work equivalent to POST (with request parameters and content
type) should be sufficient.
Comment 1 Alf Hogemark 2007-10-14 06:03:09 UTC
I believe this is fixed in SVN changelist 584535, so you can do some testing.
But I will not mark this bug as fixed before I have added some unit tests for
this case.
Comment 2 Greg Smith 2007-10-15 08:09:28 UTC
Hi Alf,

I extracted the latest (SVN 584775) and I am still having the problem with the
latest version.  To be more precise about my use case:

I have REST style app that uses JSON and HTTP verbs for all client interaction.
 When I tried to use HTTP PUT, with Content Encoding of "application/json",
Method of "PUT", and added a request parameter with my JSON data (Value = empty,
Encode = not checked, Include Equals = not checked), I got the following as the
request:

PUT /resources/employees/user1 HTTP/1.1
Connection: keep-alive
X-lori-time-1: 1192051198765
Accept-Encoding: gzip,deflate
Referer: http://localhost:8080/
Cache-Control: no-cache
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Pragma: no-cache
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.7)
Gecko/20070914 Firefox/2.0.0.7
Keep-Alive: 300
Accept:
text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Host: localhost:8080
Accept-Language: en-us,en;q=0.5
Content-Type: application/json

With no body.  (no content length, either)

The original sampler item was created through the HTTP Proxy Server.  (which is
why it has all of the above headers)

By switching the same request to method = "POST", the JSON content from the
request parameter is available in the body.

I am happy to do any additional testing or help with debugging.
Thanks
Comment 3 Alf Hogemark 2007-10-15 12:29:00 UTC
(In reply to comment #2)
If you could attach the test plan (remove any usernames / passwords), that would
be great. Then I could use it for testing, just by changing the sampler
slightly, to point it to the "HTTP Mirror Server" of JMeter.

I think I'll manage to have a look at it tomorrow evening.
Comment 4 Alf Hogemark 2007-10-15 13:00:58 UTC
Created attachment 20985 [details]
Tets plan with PUT requests using the two HTTP samplers

I managed to do some testing today.
Here it the test plan I use for testing, against the HTTP Mirror server.
Comment 5 Alf Hogemark 2007-10-15 13:05:55 UTC
I think I have solved the problem now, you should try the SVN changelist 584882.
If you want to test that, it would be helpful.
I'll try to add unit tests for the code tomorrow, so that we can be more certain
that the code is correct.
Comment 6 Greg Smith 2007-10-15 13:25:25 UTC
Hi Alf,

I rebuilt with the latest, and my Test Plan with a PUT works now.  That seemed
to do it

Thanks much, 
Greg
Comment 7 Alf Hogemark 2007-10-16 11:17:36 UTC
Fixed in SVN changelist 585212.