首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在android中使用REDCap API可以得到403。

在android中使用REDCap API可以得到403。
EN

Stack Overflow用户
提问于 2017-03-31 23:53:18
回答 1查看 265关注 0票数 0

我有一个REDCap项目完全安装在红帽控制台上。

生成的API令牌。

从REDCap记录保存工作。

也来自浏览器工具。

但是当我从Android应用程序调用它时,它会返回403禁用。

是否有用户设置权限之类的内容。

同样,ios应用程序也能很好地工作。

代码语言:javascript
复制
 HashMap<String, String> params = new HashMap<String, String>();
       
        params.put("token","MY TOKEN");
        params.put("content","record");

OkHttpClient client = new OkHttpClient();

        RequestBody body = RequestBody.create(JSON, String.valueOf(params));
        Request request = new Request.Builder()
                .url("MY_URL")
                .post(body)
                .addHeader("Content-Type", "application/x-www-form-urlencoded")
                .build();

        client.newCall(request).enqueue(new Callback() {


            @Override
            public void onFailure(com.squareup.okhttp.Request request, IOException e) {
                e.printStackTrace();
            }

            @Override
            public void onResponse(com.squareup.okhttp.Response response) throws IOException {
                if (!response.isSuccessful()) {
                    throw new IOException("Unexpected code " + response);
                } else {
                    // do something wih the result
                    Log.d("check ok http response ", response.toString());
                }
            }

    });

在浏览器工具中,如果我放置相同的URL并选择POST,并且只设置两个params令牌和内容,则返回200 OK。

但在Android系统中,它返回403。请帮助,我已经尝试了几种方法的android代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-01 19:56:58

你要这么做:

代码语言:javascript
复制
RequestBody body = RequestBody.create(JSON, String.valueOf(params));

那不是一个有效的身体。这样做:

代码语言:javascript
复制
FormBody.Builder formBuilder = new FormBody.Builder()
    .add("token","MY TOKEN").add("content","record");

然后

代码语言:javascript
复制
Request request = new Request.Builder()
            .url("MY_URL")
            .post(formBuilder.build())
            .addHeader("Content-Type", "application/x-www-form-urlencoded")
            .build();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43151209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档