Solved

Richtext in a SOAP request

Posted on 2010-11-18
4
688 Views
Last Modified: 2012-05-10
Soap webservice, referenced using a .net 3.5 service reference

Text Encoding is utf-8

The field type is a string

<s:element minOccurs="0" maxOccurs="1" name="Content" type="s:string" />

When I try to post richtext (hexadecimal characters) in the string property, the XML breaks.

System.Web.Services.Asmx Error: 0 : Exception Details:
System.Web.Services.Protocols.SoapException: Server was unable to read request. ---> System.InvalidOperationException: There is an error in XML document (1, 13434). ---> System.Xml.XmlException: ' ', hexadecimal value 0x0B, is an invalid character. Line 1, position 13434.
   at System.Xml.XmlTextReaderImpl.Throw(Exception e)
etc.....

I have tried SecurityElement.Escape, HTMLEncode plus a few other encoding methods to no avail.

Do you have any suggestions?

Is there any way to force a property to use CDATA in the XML request/responses?

I would prefer not to have to manually handle this at each end point.

Thanks in advance


0
Comment
Question by:hamishd
4 Comments
 
LVL 29

Expert Comment

by:Kumaraswamy R
Comment Utility
0
 
LVL 1

Accepted Solution

by:
mmahdi earned 500 total points
Comment Utility
Your best option would be to convert your RTF content to base64 string before inserting it into your xml element as base64 is xml friendly. And since the Convert.ToBase64String only takes a byte array as parameter you would need to convert first the RTF content into byte[].

//the RichTextBox control uses utf-16 encoding
//to convert to a byte array you can use ...
byte[] content = System.Text.UnicodeEncoding.Unicode.GetBytes(richTextBox1.Text);

//now convert to base64 string
string rtf = Convert.ToBase64String(content);

//insert the rtf value into your xml.
.....


//To decode your xml back to a new rtf you need to read the node value
string rtf = xmldocument.documentElement.node[0]
//convert from base64 to byte[] then from byte[] to str
richTextBox2.Text = System.Text.UnicodeEncoding.Unicode.GetString(Convert.FromBase64String(s));
0
 
LVL 19

Expert Comment

by:Amandeep Singh Bhullar
Comment Utility
This question has been classified as abandoned and is being closed as part of the Cleanup Program.  See my comment at the end of the question for more details.
0

Featured Post

What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

I recently went through the process of creating a Calendar Control of events with the basis of using a database to keep track of the dates that are selectable, one requirement was to have the selected date pop-up in a simple lightbox.  At first this…
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
This video discusses moving either the default database or any database to a new volume.
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now