使用c#添加自定义SOAP标头

时间:2011-04-17 14:47:11

标签: c#

我使用来自WSDL结构的Wsdl.exe在c#中创建了一个代理类。

我需要序列化代理类并发送到HttpWebRequest

这是我用来序列化类

的代码
using (System.IO.Stream soapStream = new System.IO.FileStream(@"C:\SoapFormat.xml", System.IO.FileMode.OpenOrCreate))
{
   System.Xml.Serialization.SoapReflectionImporter soapRefImp = new System.Xml.Serialization.SoapReflectionImporter();
   System.Xml.Serialization.XmlTypeMapping xmlTypeMapping = soapRefImp.ImportTypeMapping(typeof(clsPerson));
   System.Xml.Serialization.XmlSerializer xmlSerializer =
      new System.Xml.Serialization.XmlSerializer(xmlTypeMapping);
   xmlSerializer.Serialize(soapStream, p);
}

我将xml作为

<?xml version="1.0"?>
<clsPerson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" id="id1">
  <FirstName xsi:type="xsd:string">Jeff</FirstName>
  <MI xsi:type="xsd:string">A</MI>
  <LastName xsi:type="xsd:string">Price</LastName>
</clsPerson>

我需要添加肥皂信封。我怎样才能添加c#。

我的输出应该是这样的

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Body>
<clsPerson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" id="id1">
      <FirstName xsi:type="xsd:string">Jeff</FirstName>
      <MI xsi:type="xsd:string">A</MI>
      <LastName xsi:type="xsd:string">Price</LastName>
    </clsPerson>
    </soapenv:Body>
</soapenv:Envelope>

您是否需要创建字符串构建器并将soap信封添加为字符串。 然后将xml插入到该字符串中。

例如

string s= "<body>"+ xml  + "</body">

c#中的任何其他选项可以创建soap信封吗?

我需要将这个soapenvelope作为httprequest发送到web服务。

任何帮助表示赞赏。

这需要webservice而不是wcf。

谢谢

supriya

0 个答案:

没有答案