I have a Soap WebService with some WebMethods.
Some of this WebMethods receive input parameters and send an output value, but also send and custom class in its header (or at least that is what i want).
I read about SOAP Header and at some point i had a method working with a costum class in both request and response headers.
Not sure what I've done but now the code is not working.
NOTE: I'm using SOAP UI to test.
[SoapHeader("npuHeader", Direction = SoapHeaderDirection.Out)]
public string obterSiteDocumentacaoUrl(NpuHeader npuHeader, string pedido)
{
string url = null;
if (validaNpuHeader(ref npuHeader))
{
url = dataAccess.obterSiteDocumentacaoUrl(pedido);
}
npuHeader.correlationNPU = npuHeader.npu;
npuHeader.npu = CreateNPU("", "");
npuHeader.systemCode = SistemaOrigem;
npuHeader.creationTime = DateTime.Now;
npuHeader.operationDate = DateTime.Now;
return url;
}
[Serializable]
public class NpuHeader : SoapHeader
{
public NpuHeader() { }
public string npu { get; set; }
public string correlationNPU { get; set; }
public string systemCode { get; set; }
public DateTime creationTime { get; set; }
public DateTime operationDate { get; set; }
public List<GeneralResponseSuccess> responseSuccess { get; set; }
}
[Serializable]
public class GeneralResponseSuccess
{
public string errorCode { get; set; }
public string message { get; set; }
public string description { get; set; }
public GeneralResponseSuccess() { }
public GeneralResponseSuccess(string errorCode, string message, string description)
{ this.errorCodeField = errorCode; this.messageField = message; this.descriptionField = description; }
public GeneralResponseSuccess(WebServiceBusinessResult error, string description)
{
this.errorCode = error.errorCode;
this.message = error.message;
this.description = description;
}
}
Here goes a test:
REQUEST
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
<soapenv:Header/>
<soapenv:Body>
<tem:obterSiteDocumentacaoUrl>
<tem:npuHeader>
<tem:npu>12345678901234567890123456789012345678901234567890</tem:npu>
<tem:systemCode>0253</tem:systemCode>
<tem:creationTime>2015-06-17T00:00:00</tem:creationTime>
<tem:operationDate>2015-06-17T00:00:00</tem:operationDate>
</tem:npuHeader>
<tem:pedido>11SEB9999</tem:pedido>
</tem:obterSiteDocumentacaoUrl>
</soapenv:Body>
</soapenv:Envelope>
RESPONSE
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<obterSiteDocumentacaoUrlResponse xmlns="http://tempuri.org/">
<obterSiteDocumentacaoUrlResult>www.google.com</obterSiteDocumentacaoUrlResult>
</obterSiteDocumentacaoUrlResponse>
</soap:Body>
</soap:Envelope>
If i check the header tab in SOAP UI there is no NPUHeader object
Header Response Data
X-AspNet-Version : 2.0.50727
Date : Mon, 22 Jun 2015 13:53:18 GMT
Content-Length : 422
#status# : HTTP/1.1 200 OK
Content-Type : text/xml; charset=utf-8
Connection : Close
Server : ASP.NET Development Server/9.0.0.0
Cache-Control : private, max-age=0