We are already scanning well (AbstractEncoder.java line#109) and catching these invalid stuff (character < 0x20), but simply throwing a Runtime exception here. The user is asking for encoding/escaping this subset of characters appropriately so that they can be decoded/unescaped on the clientside. Currently we can't provide this, i think, because there is no standard way to do this, such that the underlying XML parsers won't crib.
-venkat On 7/9/05, Tom Jordahl (JIRA) <axis-dev@ws.apache.org> wrote: > [ > http://issues.apache.org/jira/browse/AXIS-2025?page=comments#action_12315334 ] > > Tom Jordahl commented on AXIS-2025: > ----------------------------------- > > So enhancing the scanning of strings does not seem like a viable option here? > At this point, returning a reasonable fault may be the best we can do. > > > Illegal XML characters in String arguments and return values cause XML > > exceptions in Axis calls > > ----------------------------------------------------------------------------------------------- > > > > Key: AXIS-2025 > > URL: http://issues.apache.org/jira/browse/AXIS-2025 > > Project: Apache Axis > > Type: Bug > > Components: Serialization/Deserialization > > Versions: 1.2 > > Environment: All (but reproduced on WinXP). > > Axis 1.1 and 1.2 > > Reporter: Shankar Unni > > Assignee: Venkat Reddy > > Attachments: Axis1.1badmsgAPI.log, Axis1.1echoAPI.log, > > Axis1.2badmsgAPI.log, Axis1.2echoAPI.log > > > > Arguments and return values of Java type String are incorrectly handled if > > they contain non-printing illegal ASCII characters. > > Example 1: bad return values: > > - - - - - - - - - - - - - - - > > E.g. the string > > "bad char: " + (char)3 + "." > > Trivial example: > > foo.jws: > > public class foo { > > public String badmsg() > > { > > return "bad: " + (char)3 + "."; > > } > > } > > When calling this method and the server is running on Axis 1.1, it returns > > XML with the illegal character ASCII "3" in the text: > > <badmsgReturn xsi:type="xsd:string">bad: ?.</badmsgReturn> > > This causes an XML parse exception on the client side > > ("org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0x3) > > was found in the element content of the document.") > > With Axis 1.2, the server doesn't even return a valid response: I get an > > HTTP 200 OK with an empty content, causing a different XML parse error. > > Example 2: bad parameter values: > > - - - - - - - - - - - - - - - - > > A similar problem exists when passing such a string from the the client > > side. > > If I have a method in foo.jws: > > public class foo { > > public String echo(String s) > > { > > return s; > > } > > } > > Then if I write an ordinary Java client to call this, and pass it a bad > > string as in the beginning of this post, I get an exception thrown while > > the call is being composed: > > java.lang.IllegalArgumentException: The char '0x3' in 'bad char: ?.' is not > > a valid XML character. > > This is somewhat absurd: shouldn't the serialization layer be encoding > > these illegal XML characters as entity escapes? They're entirely legal in > > the current locale (US), and normal Java code handles this character quite > > normally. Why should it croak when passed by XML/RPC? > > -- > This message is automatically generated by JIRA. > - > If you think it was sent incorrectly contact one of the administrators: > http://issues.apache.org/jira/secure/Administrators.jspa > - > For more information on JIRA, see: > http://www.atlassian.com/software/jira > >