How to POST JSON data with Python Requests?
Starting with Requests version 2.4.2, you can use the json=
parameter (which takes a dictionary) instead of data=
(which takes a string) in the call:
>>> import requests
>>> r = requests.post('http://httpbin.org/post', json={"key": "value"})
>>> r.status_code
200
>>> r.json()
{'args': {},
'data': '{"key": "value"}',
'files': {},
'form': {},
'headers': {'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate',
'Connection': 'close',
'Content-Length': '16',
'Content-Type': 'application/json',
'Host': 'httpbin.org',
'User-Agent': 'python-requests/2.4.3 CPython/3.4.0',
'X-Request-Id': 'xx-xx-xx'},
'json': {'key': 'value'},
'origin': 'x.x.x.x',
'url': 'http://httpbin.org/post'}
How to POST JSON with data payload and header with Python Requests?
Looks like you need to expand the payload to include more (all) of the parameters (including the cookies, specifically the ASP.NET_SessionId
).
import requests
import warnings
warnings.filterwarnings("ignore")
term=24
amount=5000
url = 'https://simuladores.bancomontepio.pt/ITSCredit.External/Calculator/ITSCredit.Calculator.UI.External/gateway/Calculator/api/Calculator/Calculate?hash=-1359629931'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36',
'Accept-Language': 'pt-PT,pt;q=0.9,en-US;q=0.8,en;q=0.7',
'Cookie':'ASP.NET_SessionId=fhkyn1vn5knlw3uhdnh50nii;'}
payload = {
"CCRDCalculateInput":{},
"MultifunctionsCalculateInput":{},
"Device":{
"Browser":"chrome",
"BrowserVersion":"96.0.4664.110",
"Device":"Desktop",
"Os":"windows",
"OsVersion":"windows-10",
"UserAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36"},
"IsCustomer":'true',
"Amount":amount,
"Term":term,
"ConditionCode":"26B1129900X-01-I-129900-F",
"CreditDestinationCode":"129900",
"ProductCode":"26B1129900X",
"FinancedExpenses":'false',
"FrequencyTrancheCode":'null',
"GoalCode":"C006",
"GoalDescription":"PROJETOS PESSOAIS",
"FrequencyTypeCode":"M",
"FamilyCode":"CP",
"Proponents":[{
"Position":'1',
"Birthday":"1992-03-10T13:03:24.000Z",
"State":'true',
"EntityType":{
"ID":'1',
"CompanyID":'1',
"Code":"P",
"Description":"Proponente",
"Value":'null',
"ValueString":'null',
"State":'true',
"Imported":'null'},
"ExpenseCodes":[
"009"]}],
"Counterparts":'0',
"OptionalExpenses":[{
"Code":"009",
"Factor":'1'}],
"ResidualValue":'0',
"InterestOnly":'0',
"Deferment":'0'}
jsonData = requests.post(url, headers=headers, json=payload, verify=False).json()
results = jsonData['Result']
mtic = results['MTIC']
installment = results['PeriodInstallment'][0]['Installment']
taeg = results['TAEG']
tan = results['PeriodInstallment'][0]['TAN']
print(f'Installment: {installment}\nTAEG: {taeg}\nTAN: {tan}\nMTIC: {mtic}')
Output:
Installment: 224.5
TAEG: 14.8
TAN: 7.0
MTIC: 5708.2
How to send file and json data with python requests library?
Thanks to @OlvinRoght I found the answer.
you can set data arguments to whatever data you have and files argument for files.
like this:
my_file = open(filename, 'rb')
file = {
'upload': (
os.path.basename(filename), my_file ,
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
)
}
data = {
'uuidKey': str(user_key),
'agree-term': False,
'is_tarh': is_incentive_traffic_zone,
'description': ''
}
result = requests.post("http://127.0.0.1:5000/schedule-payment", data=data, files=file)
Sending post request with both data and JSON parameters
requests.post(url, json=payload)
is just a shortcut for requests.post(url, data=json.dumps(payload))
Note, the json parameter is ignored if either data or files is passed.
docs
So, no, it is not possible to pass both data
and json
parameters.
Related Topics
Call Python Code from an Existing Project Written in Swift
How to Create Variable Variables
"Least Astonishment" and the Mutable Default Argument
How to Make a Flat List Out of a List of Lists
How to Deal With Settingwithcopywarning in Pandas
What Does ** (Double Star/Asterisk) and * (Star/Asterisk) Do For Parameters
Short Description of the Scoping Rules
How to Execute a Program or Call a System Command
What Does the "Yield" Keyword Do
Flatten an Irregular List of Lists
How to Convert String Representation of List to a List
How to Find All Occurrences of an Element in a List
Renaming Column Names in Pandas
How to Do a Case-Insensitive String Comparison
Python Regex Find All Overlapping Matches