Как добавить пользовательский заголовок в запрос SOAP с использованием C#?
Я подключаюсь к серверу RemObjects SDK SOAP, написанному на Delphi, используя клиент C#. Я могу сделать первоначальный вход в систему, но последующие запросы требуют настраиваемый заголовок SOAP, который выглядит следующим образом:
<SOAP-ENV:Header SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:NS1="urn:MyAPI">
<NS1:ROClientIDHeader xsi:type="NS1:ROClientIDHeader">
<ID xsi:type="xsd:string">{3EC5A9DF-C6DC-4BFB-8134-37DDCF07910D}</ID>
</NS1:ROClientIDHeader>
</SOAP-ENV:Header>
Мой существующий код выглядит так:
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// Create a new instance of the login service
MyLibrary.LoginServiceClient LoginClient = new MyLibrary.LoginServiceClient();
// Call the Login method on the server
MyLibrary.TLoginInfo LoginInfo = LoginClient.Login("Administrator", "master", 0, 0, MyLibrary.TClientType.ctWindowsClient);
// Set the Session ID
var SessionID = LoginInfo.SessionId;
// Create a new instance of the Utils service
MyLibrary.UtilsClient UtilsClient = new MyLibrary.UtilsClient();
// Set the SOAP header //
// <SOAP-ENV:Header SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:NS1="urn:EasyIPv6API">
// <NS1:ROClientIDHeader xsi:type="NS1:ROClientIDHeader">
// <ID xsi:type="xsd:string">{3EC5A9DF-C6DC-4BFB-8134-37DDCF07910D}</ID>
// </NS1:ROClientIDHeader>
// </SOAP-ENV:Header>
// Make the call
var AddResult = UtilsClient.AddValues(1, 1);
}
}
}
Как добавить пользовательский заголовок в запрос? Пожалуйста, имейте в виду, что в настоящее время я совершенно не знаю C#.
2 ответа
С помощью RemObjects мы наконец заработали. Если кому-то интересно, они подготовили статью, объясняющую, как это делается. Вы можете найти его http://wiki.remobjects.com/wiki/WIP:Consuming_RemObjects_SOAP_services_with_third_party_clients
Если в последующем запросе ожидается заголовок Soap, то UtilsClient должен иметь свойство, например SoapHeaderValue, которое вы можете установить.