1

我正在开发一个 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;
        }
...

我如何在正文中只放置一个参数但没有键值?

提前致谢 :)

4

1 回答 1

2

我找到了解决方案:

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

现在我收到代码 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();
   }

我希望能帮助别人:)

于 2015-07-01T09:57:09.203 回答