【问题标题】:How can I POST json or the contents of an object using Scribe?如何使用 Scribe 发布 json 或对象的内容?
【发布时间】:2016-06-09 04:21:42
【问题描述】:

我正在使用 Jackson 将模型序列化为 json,并且我想使用 Scribe(一个 OAuth java 库)使用该模型向 url 发出 POST 请求。

目前我正在使用 util 方法创建服务,为该服务创建请求,然后我签署请求然后发送它。在发送之前,我需要以某种方式将我的对象与请求一起附加。

final OAuth20Service service = util.getService();
final OAuthRequest request = new OAuthRequest(Verb.POST, url, service);
// request.addPayload(MAPPER.writeValueAsString(requestModel));
// request.addParameter(???);
service.signRequest(new OAuth2AccessToken(accessToken), request);
final Response postResponse = request.send();

问题在于将字符串化的 json 作为有效负载发送不起作用,设置参数的唯一方法是传入两个字符串,但我的对象中有嵌套的数组和对象。由于postResponse.getBody() 返回一个字符串(我假设在 json 中),它必须支持以另一种方式发送 json,对吧?如何将复杂的参数(例如对象模型、json 等)与请求一起发送?

【问题讨论】:

    标签: java oauth scribe


    【解决方案1】:

    您必须添加 application/json;charset=UTF-8 内容类型。

    final OAuth20Service service = util.getService();
    final OAuthRequest request = new OAuthRequest(Verb.POST, url, service);
    request.addHeader("Content-Type", "application/json;charset=UTF-8");
    request.addPayload(MAPPER.writeValueAsString(requestModel));
    // or this if you have a json string
    // request.addPayload(json);
    service.signRequest(new OAuth2AccessToken(accessToken), request);
    final Response postResponse = request.send();
    

    【讨论】:

    • 有没有办法在没有消费者令牌的情况下进行请求?就像您第一次请求获取访问和秘密令牌时一样
    • @Bradley 我们需要从哪个包中导入 Mapper?
    猜你喜欢
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    • 1970-01-01
    • 1970-01-01
    • 2017-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多