如何处理从Android调用SharePoint列表时出现403错误?

时间:2019-04-24 05:47:26

标签: java android sharepoint android-volley sharepoint-online

我想从Android调用SharePoint rest API。为此,我使用Cookie来通过Web视图调用rest API,但是在调用时却得到了“ BasicNetwork.performRequest:意外的响应代码403”。

如果我在这里尝试使用volley调用SharePoint rest api。 更新:我正在使用此网站进行版权SharePoint rest api from android **更新:在研究过程中,我发现了一个使用肥皂在线连接共享点的示例,是否知道该怎么做? **

private void sendAndRequestResponse() {
    //RequestQueue initialized
    Log.d(TAG, "Starting volley request to graph");

    /* Make sure we have a token to send to graph */

    RequestQueue queue = Volley.newRequestQueue(this);
    JSONObject parameters = new JSONObject();

    try {
        parameters.put("key", "value");
    } catch (Exception e) {
        Log.d(TAG, "Failed to put parameters: " + e.toString());
    }
    JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url,
            parameters,new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            /* Successfully called graph, process data and send to UI */
            Log.d(TAG, "Response: " + response.toString());
            Toast.makeText(MainActivity.this, ""+response.toString(), Toast.LENGTH_SHORT).show();



        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.d(TAG, "Error: " + error.toString());
        }
    }) {
        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            Map<String, String> headers = new HashMap<>();
            headers.put("Cookie","rtFa=" + RTFA + "; FedAuth=" + FedAuth);
            headers.put("Accept","application/json;odata=verbose");
            headers.put("Content-type","application/json;odata=verbose");
            return headers;
        }
    };

    Log.d(TAG, "Adding HTTP GET to Queue, Request: " + request.toString());

    request.setRetryPolicy(new DefaultRetryPolicy(
            3000,
            DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
            DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
    queue.add(request);
}

我使用rtfa并提供了cookie作为标头传递。

更新:我使用共享点登录URL进行Windows身份验证。成功后,我将存储rfta和联邦身份验证。 cookie将令牌作为标头传递,但是我遇到了同样的错误。

0 个答案:

没有答案