全部。我正在尝试使用Sun Jersey Client API与Jesey Oauth连接到twitter。假设我已经拥有了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");
twitter将以401,不正确的签名回复。如果我试试
resource.type("application/x-www-form-urlencoded").post(String.class, "status=test");
twitter会接受它。如何让Oauth使用编码为“%20”的空格?
谢谢! 梅森
答案 0 :(得分:0)
这应该在运动衫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完成工作