2016-11-23 21 views
4

Я пытаюсь получить данные с сервера точек обмена. Ниже приведен мой код.Android NTLM получение HTTP/1.1 401 Неавторизованный

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 Он отлично работает с теми же учетными данными. plz предложите мне внести изменения в код.

+0

Возможно, вам не нужны какие-либо изменения в вашем коде. В IE в разделе «Инструменты»> «Дополнительно» убедитесь, что вы включили «Интегрированную проверку подлинности Windows» в разделе «Инструменты»> «Безопасность»> «Локальная интрасеть»> «Сайты»> «Дополнительно», убедитесь, что указан целевой веб-сайт. Очистить файлы cookie и перезагрузить IE. –

ответ

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();