Клиент Jesey Oauth и пробелы "% 20" - PullRequest
0 голосов
/ 25 января 2010

Привет всем. Я пытаюсь использовать клиентский API Sun Jersey с Jesey Oauth для подключения к твиттеру. Допустим, у меня уже есть токен и секрет токена.

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);

Этот код будет работать, но пробелы закодированы как "+". Это было бы нормально, но Twitter, похоже, принимает только «% 20». если я попытаюсь заменить пост

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

или

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

Твиттер ответит 401, неправильная подпись. Если я попытаюсь просто

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

Твиттер примет это. Как я могу заставить Oauth работать с пробелами, закодированными как "% 20"?

Спасибо! Мейсон

1 Ответ

0 голосов
/ 31 августа 2010

Это должно быть исправлено в майке 1.3 https://jersey.dev.java.net/issues/show_bug.cgi?id=511 https://jersey.dev.java.net/issues/show_bug.cgi?id=433

но мы сталкиваемся с той же проблемой.

Простой net.oauth.client.OAuthClient выполняет работу

...