gpt4 book ai didi

c# - 不知道如何创建 SOAP header

转载 作者:可可西里 更新时间:2023-11-01 08:55:33 26 4
gpt4 key购买 nike

我几乎没有使用 SOAP 协议(protocol)的经验。我需要连接到所需 header 的服务。我认为这在 Java 中有点标准,但在 C# 中必须手动创建此 header 。

这里有没有人能够连接到类似的服务:已经创建了标题或者甚至可能知道一些可以简化标题创建的标准库?您可以分享一些代码或引用资料吗?

我还发现了一个线索,如果使用 WS2005 可能会生成 header ,因为它有 WS3 插件。有人可以对此发表评论吗?快速查看此插件后,我发现了与安全 header 中类似的字段,但仍然无法创建 header 。

最佳答案

我们可以用下面的代码解决这个问题:

public class SecurityHeader : System.ServiceModel.Channels.MessageHeader {
public string userName;
public string password;

protected override void OnWriteStartHeader (System.Xml.XmlDictionaryWriter writer, System.ServiceModel.Channels.MessageVersion messageVersion)
{
writer.WriteStartElement("wsse", Name, Namespace);
writer.WriteXmlnsAttribute("wsse", Namespace);
}

protected override void OnWriteHeaderContents (System.Xml.XmlDictionaryWriter writer, System.ServiceModel.Channels.MessageVersion messageVersion)
{
writer.WriteStartElement("wsse", "UsernameToken", Namespace);

writer.WriteStartElement("wsse", "Username", Namespace);
writer.WriteValue(userName);
writer.WriteEndElement();

writer.WriteStartElement("wsse", "Password", Namespace);
writer.WriteValue(password);
writer.WriteEndElement();

writer.WriteEndElement();

}

public override string Name
{
get { return "Security"; }
}

public override string Namespace
{
get { return "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"; }
}
}

这写入了 DataPower 框所需的 header 。

如何使用类 SecurityHeader

    public static void Main(string[] args)
{

var webService = new ServiceReference1.MyWebService();
....
webService.Open();


using (OperationContextScope scope = new OperationContextScope((IContextChannel)webService.InnerChannel))
{

var myObjRequest = GetMyObjRequest();

MessageHeaders messageHeadersElement = OperationContext.Current.OutgoingMessageHeaders;
messageHeadersElement.Add(SecurityHeader("UserName", "Password"))


var res = webService.MyServe(myObjRequest);
Console.WriteLine(res.ToString());
}
}

关于c# - 不知道如何创建 SOAP <wsse :Security> header,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/734355/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com