使用Scribe Library将参数添加到正文中

时间:2015-06-30 22:54:45

标签: android scribe oauth-1.0a

我正在开发一款Android应用,我已经集成了Scribe库,可以与Magento建立与OAuth1.0的http连接。我的问题是我需要将带有参数的请求发送到正文但没有密钥。现在我正确登录并且我的令牌被授权,我从服务器,类别获得产品,等等......但是我无法结账,因为我总是得到代码“401授权要求”。我认为问题可能在于身体中的参数。

我的代码:

...
        @Override
        protected String doInBackground(String... json) {
           String result = null;
           org.scribe.model.Response response = null;
           String url = Global.BASE_URL + "cart/1";

           if(Global.TOKEN_AUTHORIZED != null) {
             OAuthRequest request = new OAuthRequest(Verb.POST, url);
             //I only need insert a json into body without key
             request.addBodyParameter(<I don't need a key>, json[0]);
             Global.OAUTH_SERVICE.signRequest(Global.TOKEN_AUTHORIZED, request);
             response = request.send();
           }

           if(response != null && response.getCode() == 200) {
             result = response.getBody();
           } else {
             result = "ERROR";
           }
           return result;
        }
...

我如何只在身体中放置一个参数但没有键,值?

提前致谢:)

1 个答案:

答案 0 :(得分:2)

我找到了解决方案:

  1. 首先需要添加一个Header来表示请求的内容是json
  2. 要在没有键的情况下将单个参数添加到正文中,值存在一个名为addPayload(String)的方法
  3. 现在我收到代码为200的回复:)

        if(Global.TOKEN_AUTHORIZED != null) {
            OAuthRequest request = new OAuthRequest(Verb.POST, url);
            request.addHeader("Content-Type", "application/json");
            request.addPayload(params[0]);
            Global.OAUTH_SERVICE.signRequest(Global.TOKEN_AUTHORIZED, request);
           response = request.send();
       }
    

    我希望能帮助某人:)