Как отправить (установить) параметр dictonaryy клиенту zeep

#python-3.x #soap #zeep

#python-3.x #soap #zeep

Вопрос:

Извините, если этот вопрос уже задан. Я пытаюсь отправить некоторый параметр как dict, но я получаю результаты как none или not note found . в параметре я отправляю nodeName(GOAFB) и хочу изменить его NodeDetails, как указано в параметре. И это имя узла доступно по адресу, проверьте с помощью метода get (показано на снимке). Ниже приведен код, который я пробовал

 from zeep import Client
from zeep.transports import Transport
from requests import Session
from requests.auth import HTTPBasicAuth
from zeep.wsse.username import UsernameToken
import json

wsdl = "http://10.2.1.8/ws/17.0/Bhaul.asmx?wsdl"
session = Session()
client = Client(wsdl, transport=Transport(session=session),wsse=UsernameToken('admin','password'))

param = {
  "Ib440ConfigSet": {
    "NodeName": "GOAFB",
    "NodeDetail": {
      "Custom": [
        {
          "Name": "Circle",
          "Value": "KOLKATA"
        },
        {
          "Name": "SGW",
          "Value": "1010"
        }
      ]
    }
   }
}
dd=client.service.Ib440ConfigGet("GOAFB")

client.service.Ib440ConfigSet(*param)
  

Приведенный ниже снимок содержит результаты:
введите описание изображения здесь

Пожалуйста, поддержите, как заставить его работать

Ответ №1:

Для того чтобы отправить dict сообщение, нам нужно назначить double * , так что это должно сработать для вас:

 client.service.Ib440ConfigSet(**param)