Как передать динамическое значение в XML-файл? - PullRequest
0 голосов
/ 13 декабря 2018

Мы работали с SOAP API в Python.Нам нужно динамически передать значения в XML-файле запроса.

test.xml file:

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
    <Body>
        <Add xmlns="http://tempuri.org/">
            <intA>3</intA>
            <intB>4</intB>
        </Add>
    </Body>
</Envelope>

Python-скрипт:

from bs4 import BeautifulSoup
import requests
import xml.etree.ElementTree as ET
import lxml
url="http://www.dneonline.com/calculator.asmx?WSDL"
headers = {'content-type': 'text/xml'}
xmlfile = open('test.xml','r')
body = xmlfile.read()


response = requests.post(url,data=body,headers=headers)

print(response.text)

Нам нужно передать intAи intB динамически из python.

1 Ответ

0 голосов
/ 13 декабря 2018

Вы можете использовать метод форматирования строки.Вы можете указать позиционные / ключевые аргументы в вашем XML-файле.Во время вызова запросов вы можете передать значения этих аргументов.

Вот как должен выглядеть ваш файл test.xml:

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
    <Body>
        <Add xmlns="http://tempuri.org/">
            <intA>{first_number}</intA>
            <intB>{second_number}</intB>
        </Add>
    </Body>
</Envelope>

, а в вашем скрипте Python вы можетезагрузить xmlfile, и при отправке запросов на сообщения аргументы могут быть переданы.Вот как:

import requests

url = "http://www.dneonline.com/calculator.asmx?WSDL"
headers = {'content-type': 'text/xml'}
xmlfile = open('test.xml', 'r')
body = xmlfile.read()

response = requests.post(url, data=body.format(first_number=1, second_number=4), headers=headers)

print(response.text)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...