«WebFault: входная строка была не в правильном формате», даже если входная строка находится в строке? - PullRequest
0 голосов
/ 05 ноября 2019

Настройка

Я работаю с SOAP через Python 3.7 и пакет suds.

Я использую фамилию клиента, чтобы проверить, существует ли клиент в базе данных клиентов.


Код

Чтобы проверить, существует ли имя в базе данных, я использую вызов GetRelaties, который выглядит как

(GetRelaties){
   SessionID = None
   SecurityCode2 = None
   cFilter = 
      (cRelatieFilter){
         Trefwoord = None
         Code = None
         ID = None
      }
 }

где я заполняю SessionID и SecurityCode2 запрашиваемой и Trefwoord фамилией клиента.

Trefwoord требует ввода строки, поэтому для его настройки я выполняю

cRFilter = c.factory.create('cRelatieFilter')
cRFilter['Trefwoord'] = 'surname_customer'

таким образом, что

(cRelatieFilter){
   Trefwoord = "surname_customer"
   Code = None
   ID = None
 }

Обратите внимание, что GetRelaties не 'Мне не нужно заполнять Code или ID.


Ошибка

Учитывая вышеизложенное, выполнение client.service.GetRelaties(SessionID,sec2,cRFilter) дает,

WebFault: b"Server raised fault: 'Server was unable to read request. ---> There is an error in XML document (1, 529). ---> Input string was not in a correct format.'"

Очевидно, я не вставляюфамилия в виде строки.

Как вставить фамилию клиента в виде строки?


Кстати, если я ищу на ID - это должно быть целое число,

cRFilter = c.factory.create('cRelatieFilter')
cRFilter['ID'] = '123456789'

так, что

(cRelatieFilter){
   Trefwoord = None
   Code = None
   ID = "123456789"
 }

Я получаю желаемый вывод - учитывая, что 123456789 имеет запись в базе данных.

Итак, я заключаю, что '123456789' принимается за целое число, тогда как в «нормальном» Python это будет строка.

...