我有一个REDCap项目完全安装在红帽控制台上。
生成的API令牌。
从REDCap记录保存工作。
也来自浏览器工具。
但是当我从Android应用程序调用它时,它会返回403禁用。
是否有用户设置权限之类的内容。
同样,ios应用程序也能很好地工作。
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代码。
发布于 2017-04-01 19:56:58
你要这么做:
RequestBody body = RequestBody.create(JSON, String.valueOf(params));那不是一个有效的身体。这样做:
FormBody.Builder formBuilder = new FormBody.Builder()
.add("token","MY TOKEN").add("content","record");然后
Request request = new Request.Builder()
.url("MY_URL")
.post(formBuilder.build())
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.build();https://stackoverflow.com/questions/43151209
复制相似问题