Skip to main content
 首页 » 编程设计

c#之如何从代理类中的 Web 服务响应中读取 http 响应 soap header

2024年01月13日30飞鱼

我在使用一个网络服务时遇到了一些问题。我用 .net 框架自带的 wsdl.exe 生成了一个代理类。但是该 web 服务返回一个未被 wsdl 映射的 header 。我必须映射标题 sop,因为它包含一些我必须阅读和使用的属性。我如何阅读 soap 的标题集合?

例如:

<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 -> Session。

请您参考如下方法:

你试过吗?

来源: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 
    } 
}