Click here to Skip to main content
15,887,430 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
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 :-

XML
<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 :-

XML
<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 :-

C#
[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
{
	// Default to Fail status
	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 :-

C#
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"];

/* Writing Log Details */	

/*	Get Details from DB Codes*/	

}
catch (Exception ex)
{
sr.ResponseCode = "100";
sr.ResponseDesc = "Internal Error";
}
finally
{
// Add a SOAP Header to an outgoing request
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;
}
Posted
Updated 16-Nov-15 2:16am
v5

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900