gpt4 book ai didi

c# - 在soap中,我想将命名空间传递给C#中的header标签

转载 作者:行者123 更新时间:2023-12-04 16:57:05 25 4
gpt4 key购买 nike

我正在尝试在 Web 应用程序中实现 Web 服务。 Web 服务需要在 header 中发送凭据。同样在 header 标签中,还有一个命名空间。我使用从 AddressHeader 继承的类来添加凭据,但现在我需要向该 header 添加命名空间。
这是结果 XML:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<wes:auth xmlns:wes="http://asdf.org">
<u>tester</u>
<p>tester</p>
</wes>
</soap:Header>
<soapenv:Body>
<get:GetCustomer xmlns:get="http://werty.org">
...
</get:GetCustomer>
</soapenv:Body>
</soapenv:Envelope>

最佳答案

我喜欢用 xml linq 这样做:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication151
{
class Program
{
static void Main(string[] args)
{
string user = "jsmith";
string password = "abcdefg";
string inputs =
"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
"<soap:Header xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
"<wes:auth xmlns:wes=\"http://asdf.org\">" +
"</wes:auth>" +
"</soap:Header>" +
"<soapenv:Body>" +
"<get:GetCustomer xmlns:get=\"http://werty.org\">" +
"</get:GetCustomer>" +
"</soapenv:Body>" +
"</soapenv:Envelope>";

XDocument doc = XDocument.Parse(inputs);
XElement wes = doc.Descendants().Where(x => x.Name.LocalName == "auth").FirstOrDefault();
List<XElement> authorization = new List<XElement>() {
new XElement("u", user),
new XElement("p", password)
};
wes.Add(authorization);
}
}
}

关于c# - 在soap中,我想将命名空间传递给C#中的header标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59846031/

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