Stream.Write / encoding problem?

I

Ireney Berezniak

Hi, I am trying to send an UTF-8 XML string to remote resource via
HttpWebRequest using POST method, which means that I need to get the
request stream and write my XML string to it. No problems here.

The problem that I'm running into is that the "+" sign that one of the
XML elements contains is lost somehow in the transaction. I verified
that the "+" is actually in the XML string prior to getting bytes, and
writing to stream:

byte[] data;
UTF8Encoding encoding = new UTF8Encoding();

data = encoding.GetBytes(formData) //formData is a string containg XML

//here request is created
....

//now add the form data to the request
//first, get the request stream
Stream stream = request.GetRequestStream();

//write data to the stream
stream.Write(data, 0, data.Length);

Any ideas why the "+" sign is lost? If I convert the byte array (data)
back into string, the "+" is there. The remote resource does not get
it, however.

If I send the same XML via reqular web form post, rather than using the
server-side HttpWebRequest call, everything works fine. This leads me
to believe that I am not doing something properly as far as encoding is
concerned. I would appreciate any pointers.

This is how the XML is constructed. I'm concatonating the string
essentially, inserting data I collected from web from into placeholders
at later time.

private string GetXMLRequest()
{
string xml = String.Empty;

xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>";
xml += "<TranxRequest>";
xml += "<MerchantNumber>{0}</MerchantNumber>";
xml += "<Products>{1}</Products>";
xml += "<xxxName>{2}</xxxName>";
xml += "<xxxCompany>{3}</xxxCompany>";
xml += "<xxxAddress>{4}</xxxAddress>";
xml += "<xxxCity>{5}</xxxCity>";
xml += "<xxxProvince>{6}</xxxProvince>";
xml += "<xxxPostal>{7}</xxxPostal>";
xml += "<xxxCountry>{8}</xxxCountry>";
xml += "<xxxPhone>{9}</xxxPhone>";
xml += "<xxxEmail>{10}</xxxEmail>";
xml += "<xxxCard_Number>{11}</xxxCard_Number>";
xml += "<xxxCCMonth>{12}</xxxCCMonth>";
xml += "<xxxCCYear>{13}</xxxCCYear>";
xml += "<CVV2Indicator>{14}</CVV2Indicator>";
xml += "<CVV2>{15}</CVV2>";
xml += "<xxxShippingName>{16}</xxxShippingName>";
xml += "<xxxShippingCompany>{17}</xxxShippingCompany>";
xml += "<xxxShippingAddress>{18}</xxxShippingAddress>";
xml += "<xxxShippingCity>{19}</xxxShippingCity>";
xml += "<xxxShippingPostal>{20}</xxxShippingPostal>";
xml += "<xxxShippingCountry>{21}</xxxShippingCountry>";
xml += "<xxxShippingPhone>{22}</xxxShippingPhone>";
xml += "<xxxShippingEmail>{23}</xxxShippingEmail>";
xml += "</TranxRequest>";

return xml;
}

ib.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,773
Messages
2,569,594
Members
45,124
Latest member
JuniorPell
Top