Hi,
I need to write a service. Which Should have below request and response format.
I have a class for both request and response type. based on country code i need to fetch from DB and return response code, response message in header of XML and in XML body i need to send country details which i got from DB. My question is,
1. How to Read/Get Header details from Incoming XML Request
2. How to return exact XML Response as like below format by returning the class object GET_COUNTRY_DETAILS_RESPONSE (sendResponse Object)
XML REQUEST :-
<ENVELOPE>
<HEADER>
<TRANSACTION_ID>ML22QKMO070515111619</TRANSACTION_ID>
<CHANNEL_REFERENCE>CCARE</CHANNEL_REFERENCE>
</HEADER>
<BODY>
<GET_COUNTRY_DETAILS_REQUEST>
<COUNTRY_ID>18053877820121</COUNTRY_ID>
</GET_COUNTRY_DETAILS_REQUEST>
</BODY>
</ENVELOPE>
XML RESPONSE :-
<ENVELOPE>
<HEADER>
<ERROR_CODE>0</ERROR_CODE>
<ERROR_DESC>SUCCESS</ERROR_DESC>
</HEADER>
<BODY>
<GET_COUNTRY_DETAILS_RESPONSE>
<COUNTRY_ID>10.0000</COUNTRY_ID>
<COUNTRY_NAME>10.0000</COUNTRY_NAME>
<CURRENCY_NAME>RS</CURRENCY_NAME>
</GET_COUNTRY_DETAILS_RESPONSE>
</BODY>
</ENVELOPE>
CLASS :-
[DataContract(Namespace = "http://uri.org")]
public class GET_COUNTRY_DETAILS_REQUEST
{
[DataMember(Order = 0)]
public string COUNTRY_ID { get; set; }
}
[DataContract(Namespace = "http://uri.org")]
public class GET_COUNTRY_DETAILS_RESPONSE
{
[DataMember(Order = 0)]
public string COUNTRY_ID { get; set; }
[DataMember(Order = 1)]
public string COUNTRY_NAME { get; set; }
[DataMember(Order = 2)]
public string CURRENCY_NAME { get; set; }
}
[DataContract(Namespace = "http://uri.org")]
public class ServiceResponse
{
public ServiceResponse()
{
ResponseDesc = "Internal Error";
ResponseCode = "100";
MethodType = string.Empty;
}
[DataMember(Order = 0)]
public string ResponseCode { get; set; }
[DataMember(Order = 1)]
public string ResponseDesc { get; set; }
[DataMember(Order = 3)]
public string MethodType { get; set; }
}
WCF Codes :-
public GET_COUNTRY_DETAILS_REQUEST GetCountryDetails(GET_COUNTRY_DETAILS_REQUEST getRequest)
{
GET_COUNTRY_DETAILS_RESPONSE sendResponse = null;
REQUEST_HEADER requestHeader = null;
ServiceResponse sr = null;
try
{
sendResponse = new GET_VOUCHER_PIN_DETAILS_REPONSE();
requestHeader = new REQUEST_HEADER();
sr = new ServiceResponse();
sr.MethodType = "GetCountryDetails";
IncomingWebRequestContext incomingHeaders = WebOperationContext.Current.IncomingRequest;
requestHeader.TRANSACTION_ID = incomingHeaders.Headers["TRANSACTION_ID"];
requestHeader.CHANNEL_REFERENCE = incomingHeaders.Headers["CHANNEL_REFERENCE"];
}
catch (Exception ex)
{
sr.ResponseCode = "100";
sr.ResponseDesc = "Internal Error";
}
finally
{
MessageHeader msgHdrRespCode = MessageHeader.CreateHeader(Constants_Service.ERROR_CODE, string.Empty, sr.ResponseCode);
MessageHeader msgHdrRespDesc = MessageHeader.CreateHeader(Constants_Service.ERROR_DESC, string.Empty, sr.ResponseDesc);
OperationContext.Current.OutgoingMessageHeaders.Add(msgHdrRespCode);
OperationContext.Current.OutgoingMessageHeaders.Add(msgHdrRespDesc);
}
return sendResponse;
}