Используемая базовая библиотека python - requests
, имеет некоторые особенности, работающие с составным содержимым "form-data".Он использует его в основном для отправки файлов как часть запроса (функция загрузки);грубо говоря, когда он анализировал ваши аргументы, он удалял заголовок, потому что не было файлов для отправки.Кроме того, если он этого не сделал, он не предназначен для того, чтобы вычитать, какие есть разные части в вашей многокомпонентной полезной нагрузке - например, он не помещает каждую пару ключ-значение в отдельную часть.
Для преодолениядля этого обычно используется параметр files
, передавая в качестве аргумента содержимое различных частей.При этом библиотека requests
автоматически устанавливает заголовок данных формы и разбивает содержимое по частям.
Вот как это сделать в RF, пояснение приведено ниже:
${data}= Evaluate {'username': (None, 'myusername'), 'password': (None, 'mypwd')}
${response}= Post Request ${Session_id} ${AUTH_TOKEN_URL_PATH} files=${data}
Используя параметр files
в ключевом слове Post Request
, ваша полезная нагрузка будет передана методу requests
post как есть.Вам не нужно явно устанавливать заголовки, библиотека сделает это за вас.
То, что передается в качестве аргумента, является словарем, если значения являются содержимым частей.Как вы можете видеть, фактические значения являются кортежами Python, потому что вы хотите переопределить имя файла в детали.Это лучше объяснить на примере;если данные похожи на это, значение представляет собой простую строку:
${data}= Evaluate {'username': 'myusername', 'password': 'mypwd'}
, тогда полезная нагрузка будет выглядеть так:
--7579227dh785568ha91866339229add786
Content-Disposition: form-data; name="username"; filename="username"
myusername
--7579227dh785568ha91866339229add786
Content-Disposition: form-data; name="password"; filename="password"
mypwd
--7579227dh785568ha91866339229add786--
Обратите внимание, что у каждой части есть «имя файла»свойство, равное имени параметра.
Когда значение является кортежем, его первый член устанавливает свойство "filename" детали;и когда это None
, «имя файла» вообще отсутствует, что приводит к следующему результату:
--7579227dh785568ha91866339229add786
Content-Disposition: form-data; name="username"
myusername
--7579227dh785568ha91866339229add786
Content-Disposition: form-data; name="password"
mypwd
--7579227dh785568ha91866339229add786--
, что, вероятно, является вашей целью.