【问题标题】:Jesey Oauth client and "%20" spacesJersey Oauth 客户端和“%20”空间
【发布时间】:2010-08-31 14:20:44
【问题描述】:

大家好。我正在尝试将 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”的空格?

谢谢! 梅森

【问题讨论】:

    标签: twitter oauth jersey


    【解决方案1】:

    这应该在球衣 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 完成这项工作

    【讨论】:

      猜你喜欢
      • 2014-12-08
      • 2017-01-17
      • 1970-01-01
      • 1970-01-01
      • 2014-12-24
      • 1970-01-01
      • 2015-07-20
      • 1970-01-01
      • 2014-01-02
      相关资源
      最近更新 更多