Я знаю, что это исправлено, но я потратил довольно много времени с той же ошибкой и без работоспособного решения, и хотел получить это решение на случай, если у кого-то еще возникла та же проблема, что и у меня. После нескольких часов поиска я заметил, что файл, на который я смотрел, использовал SOAP v1.2. Это потенциально проблема, потому что Suds (насколько мне известно) еще не поддерживает v1.2.
Я нашел обходной путь, заставляющий Suds думать, что он использует v1.2 здесь: SOAP 1.2 клиент Python . Я уверен, что это не сработает для всех, так как эта ошибка 415 может быть вызвана множеством разных причин, но она сработала для меня, и есть очень мало решений этой проблемы, поэтому, чем больше мы сможем попасть сюда, тем лучше. Я вставил код, который работал для меня ниже (на этой странице было несколько потенциальных решений).
from suds.client import Client
from suds.bindings import binding
import logging
USERNAME = 'username'
PASSWORD = 'password'
# Just for debugging purposes.
logging.basicConfig(level=logging.INFO)
logging.getLogger('suds.client').setLevel(logging.DEBUG)
# Telnic's SOAP server expects a SOAP 1.2 envelope, not a SOAP 1.1 envelope
# and will complain if this hack isn't done.
binding.envns = ('SOAP-ENV', 'http://www.w3.org/2003/05/soap-envelope')
client = Client('client.wsdl',
username=USERNAME,
password=PASSWORD,
headers={'Content-Type': 'application/soap+xml'})
# This will now work just fine.
client.service.someRandomMethod()