#python-requests #postman
#python-запросы #postman
Вопрос:
У меня есть успешный Post-вызов API через postman, но когда я генерирую фрагмент кода для вызова curl, раздел полезной нагрузки выдает ошибку
Рабочий вызов curl
curl --location --request POST 'url_to_be_used'
--header 'Authorization: Token [QWS-T]eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9'
--form 'payload={
"data": {
"Service_Type": "Tele-Consultation",
"CSR_Partner_Logo": [["", "", "", ""], []],
"Service_Count": "500 ",
"Name": "name_to_be_given"
}
}'
Фрагмент кода, сгенерированный, как показано ниже
import requests
url = "url_to_be_used"
payload = {'payload': '{
"data": {
"Service_Type": "Tele-Consultation",
"CSR_Partner_Logo": [["", "", "", ""], []],
"Service_Count": "500 ",
"Name": "name_to_be_given"
}
}'}
files = [
]
headers = {
'Authorization': 'Token [QWS-T]eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9'
}
response = requests.request("POST", url, headers=headers, data = payload, files = files)
print(response.text.encode('utf8'))
python выдает ошибку как SyntaxError: EOL при сканировании строкового литерала для полезной нагрузки, которая, как я предполагаю, связана с одинарными кавычками. Когда я удаляю отдельный код, чтобы сделать его синтаксическим без ошибок, последний вызов post выдает ошибку «недопустимая полезная нагрузка». Пожалуйста, укажите, как это исправить.
Ответ №1:
Согласно документации полезная нагрузка ожидает словарь:
https://requests.readthedocs.io/en/master/user/quickstart/
так что попробуйте:
import requests
url = "url_to_be_used"
payload={
"data": {
"Service_Type": "Tele-Consultation",
"CSR_Partner_Logo": [["", "", "", ""], []],
"Service_Count": "500 ",
"Name": "name_to_be_given"
}
}
files=[
]
headers = {
'Authorization': 'Token [QWS-T]eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9'
}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
print(response.text)
Можете ли вы также попробовать использовать три одинарные кавычки
import requests
url = "url_to_be_used"
payload={'payload': '''{
"data": {
"Service_Type": "Tele-Consultation",
"CSR_Partner_Logo": [["", "", "", ""], []],
"Service_Count": "500 ",
"Name": "name_to_be_given"
}
}'''}
files=[
]
headers = {
'Authorization': 'Token [QWS-T]eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9'
}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
print(response.text)
Комментарии:
1. сработали три одинарные кавычки :), можете ли вы объяснить мне, почему это сработало?
2. @jyitiska 3 одинарные кавычки или 3 двойные кавычки представляют многострочную строку . Поскольку ваша платежная нагрузка представлена в виде многострочной, если вы используете одинарные одинарные кавычки, компилятор ожидает, что она закончится в той же строке
3. Пожалуйста, примите ответ, нажав на знак галочки спасибо