Перевести сообщение curl на python сообщений - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь загрузить файл XML на сервер IIS , используя Python 3.8.1 и запросов . Я успешно делал это много раз, используя curl . Это работает:

curl -v -H "Content-Type: text/xml" --data-binary @MS1481_20200204_163918_4461289.xml https://oursever.com/postHere

Файл XML, который я пытаюсь загрузить, создан ранее в программе. Имя файла динамически создается с использованием последовательности строк, соединенных вместе, включая текущую дату и время в середине.

Вот как я пытаюсь загрузить файл, используя Python:

postURL = 'https://oursever.com/postHere'
postXML = {'file': open(xmlfilename, 'rb')}
postResult = requests.post(postURL, files=postXML)
print(postResult)

Я продолжаю получать <Response [400]>. Я могу успешно загрузить сразу после этого с помощью curl. Предложения

1 Ответ

0 голосов
/ 07 февраля 2020

Ошибка 400 указывает, что что-то не так с вашим клиентским вводом.

Правильно ли открывается и читается файл? Вы должны использовать либо условие with, чтобы открыть его,

with open(path) as f:
    print(type(f))

, либо убедиться, что вы читаете его с этим open(xmlfilename, 'rb').read()

Попробуйте:

postURL = 'https://oursever.com/postHere'
postXML = {'file': open(xmlfilename, 'rb').read()}
postResult = requests.post(postURL, files=postXML)
print(postResult)
...