如何从代理类中的Web服务响应中读取http响应soap标头

时间:2010-05-03 20:39:52

标签: c# .net soap wsdl web-services

我在使用一个与之合作的网络服务时遇到了一些问题。我使用.net框架附带的wsdl.exe生成了一个代理类。但该webservice返回一个未被wsdl映射的标头。我必须映射标头sop,因为它包含一些我必须阅读和使用的属性。我怎么读肥皂的标题集?

例:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Header xmlns="http://xml.amadeus.com/ws/2009/01/WBS_Session-2.0.xsd">
      <Session>
         <SessionId>545784545</SessionId>
         <SequenceNumber>1</SequenceNumber>
         <SecurityToken>asd7a87sda89sd45as4d5a4</SecurityToken>
      </Session>
   </soap:Header>
   <soap:Body>
      <TAM_Altea_Seguranca_AutenticarRS xmlns="http://xml.amadeus.com/2009/04/TAM/TAM_Altea_Seguranca_AutenticarRS_2.0">
         <statusDoProcesso>
            <codigoDoStatus>P</codigoDoStatus>
         </statusDoProcesso>
      </TAM_Altea_Seguranca_AutenticarRS>
   </soap:Body>
</soap:Envelope>

我需要阅读SOAP:HEADER - &gt;会话。

2 个答案:

答案 0 :(得分:0)

你试过这个吗?

来源:Handle SOAP Headers Required by an XML Web Service Client

public class MyWebService
{
    public SoapUnknownHeader[] unknownHeaders;

    [WebMethod]
    [SoapHeader("unknownHeaders")]
    public string MyWebMethod() 
    {
        foreach (SoapUnknownHeader header in unknownHeaders) 
        {
            // process headers
        }

        // handle request
    }
}

答案 1 :(得分:-1)

有关定义自定义SOAP标头的详细说明,请参阅this page。似乎只有VB.net代码示例,但它应该很容易翻译C#中的原则。