C# Пользовательский заголовок SoapHttpClientProtocol SOAP - PullRequest
0 голосов
/ 29 января 2020

Мне нужно добавить настраиваемое поле в заголовок SOAP, а для изменения это , а не учетные данные. Мой исходящий запрос должен выглядеть следующим образом:

<?xml version="1.0"?>
  <soapenv:Envelope xmlns:urn="urn:company:sap:ds:sales" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Header>
    <messageId xmlns="http://www.company.com/foo/bar/soap/features/messageId/">urn:uuid:123c155c-3ab4-19ca-a045-02003b1bb7f5</messageId>
  </soapenv:Header>
  <soapenv:Body>
    ...
  </soapenv:Body>
  </soapenv:Envelope>

Интересной частью, конечно, является тег messageId и его UUID. Как добавить это в C# к моему SoapHttpClientProtocol?

До сих пор я изменил класс обслуживания, сгенерированный утилитой, переопределив GetWebRequest (в новом файле частичного класса). Там я могу добавить в HttpWebRequest.Headers, но я в недоумении, как это нужно сделать, чтобы получить желаемый результат? Это не так просто, как просто написать

request.Headers["messageID"] = "urn:uuid:123c155c-3ab4-19ca-a045-02003b1bb7f5"

, потому что в нем отсутствует часть xmlns = "http://www.company.com/foo/bar/soap/features/messageId/". Я также не уверен, правильно ли это добавляет soapenv: Header (а не просто Header).

О, и, конечно, я не могу просто протестировать, потому что у меня нет доступа к серверу. который находится за брандмауэром.

...