我已经尝试了两天从我的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);
}
答案 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。
我忘记了帮助我的原始资料来源。我希望你明白。 :)