TLDR: попробуйте установить client.options.prettyxml = True
до того, как вы попробуете первый вызов для обновления.
Черт возьми, я боролся с явно идентичной проблемой в течение целого дня.Предполагая, что вы использовали аналогичную версию suds (suds_jurko 0.5 здесь), ответ на вопрос "как мне лучше отладить это?"до некоторой степени записывал в журнал:
import logging
logging.basicConfig(level=logging.INFO)
logging.getLogger('suds.client').setLevel(logging.DEBUG)
logging.getLogger('suds.transport').setLevel(logging.DEBUG)
Существует ошибка, расположенная где-то в саксофонном документе / элементах (или рядом с ними), из-за которой функция element.plain () думала об элементебыл пуст.Когда client.options.prettyxml имеет значение False, SoapClient.send () пытается использовать метод plain () саксофона Document вместо метода str ().В результате элемент был проанализирован как пустой, что привело к сбою UpdateListItems с ошибкой «Значение не попадает в ожидаемый диапазон».
ex:
MESSAGE:
b'<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:ns0="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<ns0:Body>
<ns1:UpdateListItems>
<ns1:listName>B5E50422-D16B-4C5F-AE19-CFBE943C6F3F</ns1:listName>
<updates/>
</ns1:UpdateListItems>
</ns0:Body>
</SOAP-ENV:Envelope>'
Обратите внимание, что методы GetListItems () также «работали» на меня, потому что саксофон помещал пустой элемент запроса в этот вызов SOAP, что было технически хорошо.
Чтобы обойти это, принудительно вызовите SoapClient.send () использовать «симпатичную» версию, добавив client.options.prettyxml = True
где-то перед тем, как вы вызовете свой первый сервис.
Я не заметил ошибки, потому что я, очевидно, проверял свой объект SOAP до того, как он был поврежден;включение записи в журнал показало изменение в последнюю минуту.
(я понимаю, что это старый вопрос, не уверен, что его осудили; но это было самое близкое, что я смог найти к моей настоящей проблеме ранее и почувствовал еезаслужил ответ)