Я новичок в Python, и я пытался сделать почтовый запрос в Python, отправив файл xml вместе с запросом. В Java я мог отлично сделать это с помощью приведенного ниже фрагмента кода
String url = "https://www.test.com"
URL object = new URL(url);
HttpURLConnection conn = (HttpURLConnection) object.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestProperty("Content-Type", "application/xml");
conn.setRequestProperty("Accept", "application/xml");
conn.setRequestMethod("POST");
BufferedReader br = new BufferedReader((new FileReader("D:\\test.xml")));
String line1;
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
while ((line1 = br.readLine()) != null) {
wr.write(line1);
}
wr.flush();
wr.close();
int HttpResult = conn.getResponseCode();
Чтобы заставить его работать в Python, я пробовал разные способы. Ни один из них не работал
headers = {"Content-type": "application/xml",
"Accept": "application/xml",
}
url = "https://www.test.com"
filePath = "D:\\test.xml"
file_data = [('file', (filePath, open(filePath), 'application/xml'))]
resp = requests.post(url = url, files=file_data, headers=headers)
print("resp=",resp.url)
print("resp=",resp)
И еще несколько вариантов
files = {'file':(filePath, open(filePath, 'rb'))}
files = {'file': (filePath, open(filePath, 'rb'), 'application/xml', {'Accept': 'application/xml'})}
Даже я пытался отправить файл как данные. Но безрезультатно.
data = open("D:\\test.xml", 'rb').read()
resp = requests.post(url = url, data=data, headers=headers)
Помогите, пожалуйста, понять, в чем я ошибаюсь. Я уже часами ломаю себе голову. К вашему сведению: я использую Python 3.6.1