Python Client Rest API Invocation - POST with empty body - Invalid character found in method name [{}POST]. HTTP method names must be tokens

Peter J. Holzer hjp-python at hjp.at
Sat Nov 21 07:01:10 EST 2020


On 2020-11-19 15:12:39 +0000, Shelke, Bhushan wrote:
> I have a Tomcat+Java based server exposing REST APIs. I am writing a
> client in python to consume those APIs. Everything is fine until I
> send empty body in POST request. It is a valid use case for us. If I
> send empty body I get 400 bad request error - Invalid character found
> in method name [{}POST]. HTTP method names must be tokens.
> 
> If I send empty request from POSTMAN or Java or CURL it works fine,
> problem is only when I used python as a client.
> 
> Following is python snippet -
> 
> json_object={}
> 
> header = {'alias': 'A', 'Content-Type' : 'application/json', 'Content-Length' : '0'}

'Content-Length' : '0' is wrong, but it seems that requests.post
overrides that, so it doesn't matter.


> resp = requests.post(url, auth=(username, password), headers=header, json=json_object)
> 
> 
> 
> I tried using data as well instead of json param to send payload with
> not much of success.
> 
> I captured the wireshark dumps to understand it further and found that
> the request tomcat received is not as per RFC2616
> (https://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html). Especially
> the part -
> 
> Request-Line = Method SP Request-URI SP HTTP-Version CRLF
> 
> I could see in from wireshark dumps it looked like - {}POST
> <MY-APP-URI> HTTP/1.1
> 
> As we can see the empty body is getting prefixed with http-method,
> hence tomcat reports that as an error. I then looked at python http
> library code - client.py.

I cannot reproduce this. Using Python 3.8.2 and requests 2.22.0 (as
included in Ubuntu 20.04), the request sent is "POST /env HTTP/1.1", not
"{}POST /env HTTP/1.1",


In wireshark "Follow TCP connection", the "{}" at the end of the request
is squished together with the "HTTP/1.1 302 Found" at the beginning of
the response, but they are in different colors so that shouldn't be a
problem unless you are visually impaired, and it doesn't match your
description.

        hp

-- 
   _  | Peter J. Holzer    | Story must make more sense than reality.
|_|_) |                    |
| |   | hjp at hjp.at         |    -- Charles Stross, "Creative writing
__/   | http://www.hjp.at/ |       challenge!"
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://mail.python.org/pipermail/python-list/attachments/20201121/e5f36c44/attachment.sig>


More information about the Python-list mailing list