基本身份验证无法从Android到Sharepoint 2013

时间:2016-08-19 10:25:06

标签: android sharepoint-2013 basic-authentication

我已经尝试了两天从我的Android应用程序到SharePoint 2013设置基本身份验证。我使用了HttpUrlConnection,DefaultHttpClient,Retrofit和Volley但这些都显示了授权失败错误。哪个在iOS应用程序中正常工作.Below是我的Vollery代码片段。

private void sendJsonrequestSignIn(final String userName, final String password) {
    StringRequest stringRequest = new StringRequest(Request.Method.GET, "http://192.168.50.31/sites/MobileDev/_vti_bin/listdata.svc/TestData",
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    Log.i("ResponseJson", response.toString());
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    //Log.i("ErrorJson", error.getMessage());
                    Toast.makeText(MainActivity.this, error.toString(), Toast.LENGTH_LONG).show();
                }
            }) {

        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            HashMap<String, String> params = new HashMap<String, String>();
            String creds = String.format("%s:%s", userName, password);
            String auth = "Basic " + Base64.encodeToString(creds.getBytes(), Base64.NO_WRAP);
            params.put("Authorization", auth);
            params.put("Accept", "application/json;odata=verbose");
            return params;
        }

    };
    requestQueue.add(stringRequest);
}

3 个答案:

答案 0 :(得分:1)

您是否尝试过Jshare。该库支持NTLM,适用于Java和Android。我想这可能有助于你的应用程序中的NTLM身份验证。

答案 1 :(得分:1)

您可以使用Authenticator进行基本身份验证。

import java.net.Authenticator;
import java.net.HttpURLConnection;
import java.net.PasswordAuthentication;
import java.net.URL;


try {
    Authenticator.setDefault(new Authenticator() {
        @Override
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication("user", "password".toCharArray());
        }
    });
    URL url = new URL(DOWNLOAD_URL);
    HttpURLConnection con = (HttpURLConnection) url.openConnection();

con.setReadTimeout(10000);
con.setConnectTimeout(15000);
con.setRequestMethod("GET");
con.setUseCaches(false);
con.connect();

答案 2 :(得分:0)

之前我遇到过这个问题并修好了。

不要使用

  

基本身份验证

使用

  

NTLM身份验证

我刚刚为此添加了一个要点:https://gist.github.com/franciscerio/4b0a6a969eda3b93098a50174cffd8de#file-gistfile2-txt

我忘记了帮助我的原始资料来源。我希望你明白。 :)