Я хотел бы добавить к этому одну из вещей, которую я узнал, разработав этот процесс пару лет назад: запрос, который вы отправляете, будь то статус или отправка, должен быть идентичен их примеру.
Метод, который я использовал для этого, заключался в создании отдельных документов-шаблонов XML (один для отправки, один для статуса), который содержит весь XML-файл, необходимый для каждого запроса.
На высоком уровне мое приложениеиспользует объекты WSDL, заполняя их соответствующими данными, затем я заменяю элементы XML в шаблоне значениями из объектов, подписываю документ XML, прикрепляю данные формы (для отправки) и отправляю запрос.
Просматривая то, что вы опубликовали, и сравнив его с тем, что я ранее передал, я обнаружил пару отличий:
- В вашем определении конверта есть атрибут
xmlns:oasl
, у меня его нет. - В вашем
InclusiveNamespaces
элементе у меня есть PrefixList="wsse wsa soapenv urn urn1 urn2 urn3"
.Мне сказали, что это буквальное значение просто необходимо. - Ваш
DigestMethod
- это sha256, а мой - sha1.Я понимаю, что между ними есть разница, но это может вызывать у вас некоторые проблемы? - У меня есть элемент
urn3:ACASecurityHeader
, содержащий элемент urn1:UserId
, который, я думаю, вы уже решили (его просто нетобновлено в исходном сообщении)