Мне было дано задание выполнить вызов данных SOAP WSDL для BMC Remedy в Python.У меня есть только фрагмент кода PHP для справки.
У меня есть следующие проблемы: 1: я не знаю точный формат передачи данных в метод New_GetList_Operation_0 через Python, а также вручную (скажем, через SOAP UI), как ятолько 2 с REST API json до: я пробовал ниже код Python просто случайно, но я получаю ошибку ниже: ARERR [149] Имя пользователя должно быть указано в контрольной записи
Запрос на помощь выше 2касается.
Код PHP:
public function getRemedyData($params) {
$client = new SoapClient($this->_Wsdl, $this->soapOptions);
$authvalues = new SoapVar($this->_bmcAuth, SOAP_ENC_OBJECT);
$header = new SoapHeader("New_GetList_Operation_0", "AuthenticationInfo", $authvalues, false);
$client->__setSoapHeaders(array($header));
try {
$result = $client->__soapCall("New_GetList_Operation_0", array($params));
$resultArray = array('code' => "0", 'message' => "successful");
$resultArray["result"] = $result;
} catch (Exception $e) {
$errMsg = $e->getMessage();
$resultArray = array('code' => "1", 'message' => $errMsg);
}
return $resultArray;
}
$params = array(
'Qualification' => '\'Modified Date\' >= "' . $dateTimeValue . '" and \'Categorization Tier 2\' = "<<xx Scan>>" and \'Submitter\' = "validusername"'
);
$result = $this->Remedy->getRemedyData($params);
Код Python:
import zeep
from zeep.wsse.username import UsernameToken
from requests import Session
from requests.auth import HTTPBasicAuth # or HTTPDigestAuth, or OAuth1, etc.
from zeep import Client
session = Session()
session.auth = HTTPBasicAuth('<<valid_username>>', '<<valid_password>>')
client = Client("url:8080/arsys/WSDL/public/xx/xx:xx:QueryWebService",
wsse = UsernameToken('<<valid_username>>', '<<valid_password>>'))
header = zeep.xsd.Element(
'Security',
zeep.xsd.ComplexType([
zeep.xsd.Element(
'UsernameToken',
zeep.xsd.ComplexType([
zeep.xsd.Element('Username',zeep.xsd.String()),
zeep.xsd.Element('Password',zeep.xsd.String()),
])
),
])
)
header_value = header(UsernameToken={'Username': '<<valid_username>>', 'Password': '<<valid_password>>'})
with client.settings(raw_response=True):
response = client.service.New_GetList_Operation_0(
_soapheaders=[header_value],
Qualification='\'Modified Date\' >= "05/14/2017" and \'Categorization Tier 2\' = "<<xx Scan>>" and \'Submitter\' = "<<valid_username>>"'
)
print(response.content)