Android NTLM获取HTTP/1.1 401未经授权的错误

4

我正在尝试从SharePoint服务器获取数据。 以下是我的代码。

    DefaultHttpClient httpclient = new DefaultHttpClient();

    httpclient.getAuthSchemes().register("ntlm", new NTLMSchemeFactory());
    httpclient.getCredentialsProvider().setCredentials(new AuthScope("masconsult.eu", -1),
            new NTCredentials(username, password, "", ""));
    HttpGet httpGet = new HttpGet(webserviceUrl);
    httpGet.addHeader("Content-type", "application/json");
    httpGet.getParams().setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE, false);
    // HttpResponse response="";
    String responseXML = "";
    HttpResponse response = httpclient.execute(httpGet);
    response.getStatusLine().getReasonPhrase();
    responseXML = EntityUtils.toString(response.getEntity());
    Toast.makeText(this, responseXML, Toast.LENGTH_LONG).show();

我收到了HTTP/1.1 401未授权的响应。即使我已经添加了正确的凭据,在Chrome浏览器中,使用相同的凭据可以正常工作。请建议我在代码中进行任何更改。


您的代码可能不需要任何更改。在IE中,转到“工具”>“高级”,确保已启用“集成Windows身份验证”,然后在“工具”>“安全”>“本地Intranet区域”>“站点”>“高级”下,确保目标网站已列出。清除cookies并重新启动IE。 - T-Heron
1个回答

4
现在它正在工作。 我用标题修改了我的代码。
 DefaultHttpClient httpclient = new DefaultHttpClient();
    httpclient.getAuthSchemes().register("ntlm", new NTLMSchemeFactory());
    httpclient.getCredentialsProvider().setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT), new NTCredentials(username, password, "", ""));
    HttpGet httpGet = new HttpGet(webserviceUrl);
    httpGet.addHeader("accept", "application/json;odata=verbose");
    httpGet.addHeader("content-Type", "application/json;odata=verbose");
    httpGet.getParams().setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE, false);
    HttpResponse response = httpclient.execute(httpGet);
    System.out.println("Responseeee" + response.getStatusLine());
    responseXML = EntityUtils.toString(response.getEntity());
    new JSONObject(responseXML).toString();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接