I’m trying to get a PUT request from Python into a servlet in Tomcat. The parameters are missing when I get into Tomcat.
The same code is happily working for POST requests, but not for PUT.
Here’s the client:
lConnection = httplib.HTTPConnection('localhost:8080')
lHeaders = {"Content-type": "application/x-www-form-urlencoded",
"Accept": "text/plain"}
lParams = {'Username':'usr', 'Password':'password', 'Forenames':'First','Surname':'Last'}
lConnection.request("PUT", "/my/url/", urllib.urlencode(lParams), lHeaders)
Once in the server, a request.getParameter(“Username”) is returning null.
Has anyone got any clues as to where I’m losing the parameters?
I’m guessing here, but I think the problem is that PUT isn’t meant to be used that way. The intent of PUT is to store a single entity, contained in the request, into the resource named in the headers. What’s all this stuff about user name and stuff?
Your Content Type is
application/X-www-form-urlencoded, which is a bunch of field contents. What PUT wants is something like an encoded file. You know, a single bunch of data it can store somewhere.