users@jersey.java.net

Jesey Oauth client and “%20” spaces

From: masonh <mason.harding_at_gmail.com>
Date: Mon, 25 Jan 2010 13:42:57 -0800 (PST)

HI all. I am trying to use the Sun Jersey Client API with Jesey Oauth to
connect to twitter. Lets say I already have the oauth token and token
secret.

    String accessToken = MY_TOKEN;
    String accessTokenSecret = MY_TOKEN_SECRET;
    String url = "http://twitter.com/statuses/update.xml";
    
    // initialize the params and secret.
    OAuthParameters params = initOAuthParams();
    params.token(accessToken);
    OAuthSecrets secrets = initOAuthSecrets();
    secrets.tokenSecret(accessTokenSecret);
    
    // now access the resource
    OAuthClientFilter filter = getClientFilter(params, secrets);
    WebResource resource = client.resource(url);
    resource.addFilter(filter);
    
    MultivaluedMapImpl form = new MultivaluedMapImpl();
    String status = new String("test with spaces");
    form.add("status", status);
    
    // post it
    resource.type("application/x-www-form-urlencoded").post(String.class,
form);

This code will work, but the spaces are encoded as "+". That would normally
be fine, but Twitter seems to only take "%20". if I try replacing the post
with

    resource.type("application/x-www-form-urlencoded").post(String.class,
"status=test with spaces");
or
    resource.type("application/x-www-form-urlencoded").post(String.class,
"status=test%20with%20spaces");

twitter will respond with a 401, Incorrect Signature. If I try just

    resource.type("application/x-www-form-urlencoded").post(String.class,
"status=test");

twitter will accept it. How can I get Oauth to work with spaces encoded as
"%20"?

Thanks!
Mason
-- 
View this message in context: http://n2.nabble.com/Jesey-Oauth-client-and-20-spaces-tp4456943p4456943.html
Sent from the Jersey mailing list archive at Nabble.com.