Status 500 using requests in Python

2019-09-15 03:14发布

So I am working on sending images to an url. And I planned to use Python to make the POST requests. My code looks like this:

import requests

headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.90 Safari/537.36'}

response = requests.request('POST', url, headers=headers, files={'file':open('1-watermarked-page.PNG', 'rb')})
print (response.status_code)

When I run this, I am getting a status code of 500. I tried to replace the "files" parameter by "data" and it gives me an error of 413: import requests

headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.90 Safari/537.36'}
response = requests.request('POST', url, headers=headers, data={'file':open('1-watermarked-page.PNG', 'rb')})
print (response.status_code)

Can anyone please tell me where am I making a mistake?

Thanks!

1条回答
该账号已被封号
2楼-- · 2019-09-15 03:37

The problem is that we have to send the data to a post request in the JSON format but we are sending it as a dictionary which makes the request a bad request. So the best approach known to me is to convert the data to JSON format (this might be because of the parsing that takes place at the server side)

import json
data = data={'file':open('1-watermarked-page.PNG', 'rb')}
response = request.post("url",json.dumps(data))
# json.dumps(data) converts data to json format

This worked for me, let me know if it worked for you

查看更多
登录 后发表回答