Hi Sergey,

Can u point me to where to get info on creating a custom FormProvider?
 What is the workaround?

Thanks.

regards,
Loh Kok Jeng



On 24 June 2010 23:16, Sergey Beryozkin <[email protected]> wrote:
> Hi - indeed, there's a bug in the CXF JAXRS FormProvider in that it ignores
> the encoding of the incoming ContentType - I'll try to fix it these
> weekends; a custom FormProvider can be easily created as well as a
> workaround
>
> cheers, Sergey
>
> On Thu, Jun 24, 2010 at 4:14 PM, Ron Grimes <[email protected]> wrote:
>
>> I think I may have found the answer. See
>> http://java.sun.com/docs/books/tutorial/i18n/text/string.html ).
>>
>> Here, they talk about how it is incorrect to load a string value into a
>> bytes array without specifying the encoding. Notice, in their example, that
>> the difference in
>>
>> byte[] bytes = utfEightString.getBytes(); \\ bad
>> byte[] bytes = utfEightString.getBytes("UTF8"); \\ good
>>
>> will produce a different number of byte elements. Essentially, your loop is
>> doing the same thing. For a five characters string, you will always end up
>> with a 5 element byte array, when it might have given you an 8 byte array,
>> had you specified the encoding.
>>
>> Instead, you should do this:
>>
>> byte[] bytes = utfEightString.getBytes("UTF8");
>> return new String(bytes, "UTF8");
>>
>>
>> Ron Grimes
>>
>>
>>
>>
>> -----Original Message-----
>> From: Loh Kok Jeng [mailto:[email protected]]
>> Sent: Wednesday, June 23, 2010 7:11 PM
>> To: [email protected]
>> Subject: Re: UTF-8 Characters in Request Params for REST Service
>>
>> Hi Sergey,
>>
>> This is for form based submission.
>>
>> Below is a snippet of my code.  I want to be able to accept non-ASCII
>> characters in "message" parameter below.  However, when I tested with
>> Chinese characters, they are converted to "?" as shown in my logs.
>>
>> Any help will be very much appreciated.
>>
>>   @POST
>>    // @Consumes("application/x-www-form-urlencoded")
>>    public SMSSendSmsResponse sendSms(@HeaderParam("Authorization")
>> String authorization,
>>                                     �...@context MessageContext mc,
>> @FormParam("address") List<String> address,
>>                                     �...@formparam("message") String message,
>>                                     �...@formparam("notifyURL") String
>> notifyURL,
>>                                     �...@formparam("correlator") String
>> correlator,
>>                                     �...@formparam("senderName") String
>> senderName,
>>                                     �...@formparam("Charging") String
>> Charging)
>>        throws MalformedURLException,  PolicyException, ServiceException {
>>
>>        if (address != null) {
>>            for (Iterator<String> i = address.iterator(); i.hasNext();) {
>>                log.info("Address: " + i.next());
>>            }
>>        }
>>        log.info("Message: " + message);
>>        log.info("Notify URL: " + notifyURL);
>>        log.info("Correlator: " + correlator);
>>        log.info("Sender Name: " + senderName);
>>        log.info("Charging: " + Charging);
>>
>>        ....
>>
>> }
>> regards,
>> Loh Kok Jeng
>>
>>
>>
>> On 24 June 2010 02:00, Sergey Beryozkin <[email protected]> wrote:
>> > I need to know the details of the request and how a resource method
>> > expecting the values looks like
>> >
>> > thanks, Sergey
>> >
>> > On Tue, Jun 22, 2010 at 7:10 PM, Rakesh Rai <[email protected]> wrote:
>> >
>> >> This is the method that does the trick.... converts to UTF-8 and
>> transforms
>> >> to UTF-8 format string and sends it back to the caller
>> >> Wherever in your service class / action class add this method and
>> convert
>> >> the existing string to return the UTF-8 transformed string / text
>> >>    /**
>> >>     *
>> >>     * @param utfEightString
>> >>     * @return String converted to USF-8 format and send it to the caller
>> .
>> >>     * @throws java.io.
>> >> UnsupportedEncodingException
>> >>     */
>> >>    public static final String utfEightConvert(String utfEightString)
>> >>            throws java.io.UnsupportedEncodingException {
>> >>
>> >>        byte[] bytes = new byte[utfEightString.length()];
>> >>        for (int i = 0; i < utfEightString.length(); i++) {
>> >>            bytes[i] = (byte) utfEightString.charAt(i);
>> >>        }
>> >>        return new String(bytes, "UTF-8");
>> >>
>> >>    }
>> >>
>> >> Hope it helps.
>> >> Rakesh
>> >>
>> >>
>> >> On Tue, Jun 22, 2010 at 1:47 PM, Sergey Beryozkin <[email protected]
>> >> >wrote:
>> >>
>> >> > Is it a form based submission ? or XML is posted in the body ?
>> >> >
>> >> >
>> >> > cheers, Sergey
>> >> >
>> >> > On Mon, Jun 21, 2010 at 6:00 PM, Loh Kok Jeng <[email protected]>
>> >> > wrote:
>> >> >
>> >> > > Dear all,
>> >> > >
>> >> > > I'm struggling with non-ASCII characters passed in request params of
>> a
>> >> > > REST service.  The characters become ? when received by my app
>> >> > > developed using CXF.  The encoding is set to UTF-8 by the REST
>> client.
>> >> > >  Why do I get "?"?
>> >> > >
>> >> > > Thanks in advance.
>> >> > >
>> >> >
>> >>
>> >
>>
>

Reply via email to