如何在 zeep python 中的 SOAP 请求的单个标签下发送多个值

我需要这样发送请求:


<soap:Body>

      <ver:Notification>

         <!--Optional:-->

         <ver:messages>

            <!--Zero or more repetitions:-->

            <ver:Check>

               <ver:ID>324007</ver:ID>

               <ver:BranchList>

                  <ver:Branch >

                     <ver:Area>

                        <ver:XAxis>21.23</ver:XAxis>

                        <ver:YAxis>-09.11</ver:YAxis>

                     </ver:Area>

                  </ver:Branch>

               </ver:BranchList>

            </ver:Check>

            <ver:Check>

               <ver:ID>002345</ver:ID>

               <ver:BranchList>

                  <ver:Branch >

                     <ver:Area>

                        <ver:XAxis>23.334</ver:XAxis>

                        <ver:YAxis>-11.23</ver:YAxis>

                     </ver:Area>

                  </ver:Branch>

               </ver:BranchList>

            </ver:Check>

         </ver:messages>

      </ver:Notification>

   </soap:Body>

我正在使用 python 中的 Zeep 库准备请求。我在“upstream_messages”中从上游获取一些值并对其进行迭代并创建 list_of_messages,如下所示:


list_of_messages = []

        for i in upstream_messages:

            list_of_messages .append(

                {'Check': {'ID': i[0],

                           'BranchList':

                               {'Branch':

                                   {

                                       'Area': {'XAxis': i[4], 'YAxis': i[5]}

                                   }

                               }

                           }

                }


            )

但是当我使用以下代码检查请求时:


request = client.create_message(client.service, 'Notification', messages=list_of_messages )

logger.info(etree.tostring(request, pretty_print=True))


请建议我做错了什么。我尝试使用messages=[list_of_messages]为 list_of_messages 制作列表列表,但随后我得到没有消息标签的输出


慕侠2389804
浏览 103回答 1
1回答

湖上湖

您需要将 Checks 用作数组而不是 list_of_messages。请参阅https://github.com/mvantellingen/python-zeep/issues/272。以下代码应该可以工作:list_of_messages = {'Check': []}&nbsp; &nbsp; &nbsp; &nbsp; for i in upstream_messages:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; list_of_messages['Check'].append(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {'ID': i[0],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'BranchList':&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{'Branch':&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'Area': {'XAxis': i[4], 'YAxis': i[5]}&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; )
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python