axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Davanum Srinivas <dava...@gmail.com>
Subject Re: Call with different character encoding
Date Tue, 23 Nov 2004 23:58:44 GMT
Bernie,

Looks like a useful change...can you please open a JIRA enhancement request?

thanks,
dims


On Tue, 23 Nov 2004 13:55:32 -0500, Bernie Bernstein
<peuclid@thebernsteins.com> wrote:
> I found a much easier way to do this by making only a minor
> modification to org.apache.axis.client.Call.java.
> 
> I added a new property:
> 
>      public static final String CHARACTER_SET_ENCODING    =
> SOAPMessage.CHARACTER_SET_ENCODING;
> 
> and made the appropriate changes in the property checking code.
> Then in invoke(SOAPEnvelope), it sets the message
> CHARACTER_SET_ENCODING to the one set in the Call.
> 
>              if (getProperty(CHARACTER_SET_ENCODING) != null) {
>                  msg.setProperty(SOAPMessage.CHARACTER_SET_ENCODING,  
> getProperty(CHARACTER_SET_ENCODING));
>              }
> 
> Here's the 'diff -u' for Call.java (for 1.2RC2):
> 
> --- Call.java   Tue Nov 16 13:04:43 2004
> +++
> /Users/bernard/src/jiveall/liveforum/WEB-INF/classes/org/apache/axis/
> client/Call.java       Fri Nov 19 09:24:19 2004
> @@ -113,6 +113,8 @@
>    *     TIMEOUT        - Timeout used by transport sender in
> milliseconds
>    *     TRANSPORT_NAME - Name of transport handler to use
>    *     ATTACHMENT_ENCAPSULATION_FORMAT- Send attachments as MIME the
> default, or DIME.
> + *     CHARACTER_SET_ENCODING - Character set encoding to use for
> request
> + *
>    * </pre>
>    *
>    * @author Doug Davis (dug@us.ibm.com)
> @@ -183,6 +185,13 @@
>       public static final String TRANSPORT_NAME    = "transport_name" ;
> 
>       /**
> +     * This is the character set encoding to use for the message
> +     *
> +     * @see #setProperty
> +     */
> +    public static final String CHARACTER_SET_ENCODING    =
> SOAPMessage.CHARACTER_SET_ENCODING;
> +
> +    /**
>        * This is not the name of a property that can be set with
>        * setProperty, despite its name.
>        */
> @@ -440,6 +449,9 @@
>               verifyBooleanProperty(name, value);
>               setStreaming(((Boolean) value).booleanValue());
>           }
> +        else if (name.equals(CHARACTER_SET_ENCODING)) {
> +            verifyStringProperty(name, value);
> +        }
>           else if (name.startsWith("java.") ||
> name.startsWith("javax.")) {
>               throw new JAXRPCException(
>                       Messages.getMessage("badProp05", name));
> @@ -544,6 +556,7 @@
>           propertyNames.add(TRANSPORT_NAME);
>           propertyNames.add(ATTACHMENT_ENCAPSULATION_FORMAT);
>           propertyNames.add(CONNECTION_TIMEOUT_PROPERTY);
> +        propertyNames.add(CHARACTER_SET_ENCODING);
>       }
> 
>       public Iterator getPropertyNames() {
> @@ -1849,7 +1862,10 @@
>               Message msg = null ;
> 
>               msg = new Message( env );
> -            if
> (msgContext.getProperty(SOAPMessage.CHARACTER_SET_ENCODING) != null) {
> +            if (getProperty(CHARACTER_SET_ENCODING) != null) {
> +                msg.setProperty(SOAPMessage.CHARACTER_SET_ENCODING,
> getProperty(CHARACTER_SET_ENCODING));
> +            }
> +            else if
> (msgContext.getProperty(SOAPMessage.CHARACTER_SET_ENCODING) != null) {
>                   msg.setProperty(SOAPMessage.CHARACTER_SET_ENCODING,  
> msgContext.getProperty(SOAPMessage.CHARACTER_SET_ENCODING));
>                }
>               setRequestMessage( msg );
> 
> I'm new to the Axis project group. Is there an appropriate way to
> submit this for insertion into the project? Perhaps there is a better
> way to do this that I haven't heard of yet, but I haven't found one
> yet. This code will make it possible to set the Character encoding to
> anything when making the Call.
> 
> To use it, you'd just use the setProperty() method to set the
> Call.CHARACTER_SET_ENCODING property to whatever character encoding you
> want before invoking the call.
> 
> eg:
> 
> call.setProperty(Call.CHARACTER_SET_ENCODING, "ISO-8859-1");
> 
> Bernie
> 
> 
> 
> 
> On Nov 17, 2004, at 4:21 PM, Bernie Bernstein wrote:
> > I managed to do it by copy/pasting some code from
> > org.apache.axis.client.Call.
> >
> > It wasn't easy, but it involved creating a new Message object, setting
> > it's char encoding to "ISO-8859-1", and then assembling the envelope
> > to send to Call.
> >
> >
> > On Nov 17, 2004, at 12:39 PM, Peuclid wrote:
> >> So, just to start, I'm trying to get my test client to request the
> >> data in ISO-8859-1 just to see what happens when I change the global
> >> "axis.xmlEncoding" to ISO-8859-1. So far, that doesn't seem to be
> >> changing the default anywhere. Looking at the AxisServlet code, I see
> >> that the encoding is set by the request.
> >>
> >> So, now I need to figure out how to set the encoding of the request.
> >
> 
> 


-- 
Davanum Srinivas - http://webservices.apache.org/~dims/

Mime
View raw message