I am trying to create an application that connects to a web page that uses NTLM Authentication (not mine, so I can't change the authentication method) using a username and password and returns the page's source which I will later use to extract the information that I need.
My problem is with the authentication step. Using the HttpUrlConnection returns error 401-Unauthorized. I am using jcifs. Already add it to the build.gradle file
compile group: 'jcifs', name: 'jcifs', version: '1.3.17'
Code inspired from here:
NTLM Authentication with HttpURLConnection
The importing line just before the class declaration
import org.apache.http.impl.auth.NTLMEngineException;
Doesn't work since I am suspecting that the httpclient is deprecated
My code sample:
public class DataFetcher extends AsyncTask<String, Void, String>{
    protected String doInBackground(String... urls){
        jcifs.Config.registerSmbURLHandler();
        URL url;
        HttpURLConnection connection = null;
        String result = "" ;
        try{
            url = new URL(urls[0]);
            Log.i("URL Connected", "Done");
            connection = (HttpURLConnection) url.openConnection();
            Log.i("Connection Established","Done");
            InputStream inputStream;
            int status = connection.getResponseCode();
            if(status != HttpURLConnection.HTTP_OK){
                inputStream = connection.getErrorStream();
            }else {
                inputStream = connection.getInputStream();
            }
            Log.i("Input Stream made","Done");
            InputStreamReader reader = new InputStreamReader(inputStream);
            Log.i("Input Stream Reader","Done");
            int data = reader.read();
            while(data!=-1){
                result += (char) data;
                data = reader.read();
            }
        }catch(MalformedURLException e){
            e.printStackTrace();
        }catch(IOException e){
            e.printStackTrace();
        }
        Log.i("Done",result);
        Log.i("Response",""+connection.getHeaderFields());
        return result;
    }
}
public void fetchData(){
    String url = "http://DOMAIN%5user:password@server/page.aspx";
    DataFetcher fetcher = new DataFetcher();
    fetcher.execute(url);
}
I checked out most (if not all) of all the links that I found however most links use HttpClient (which is deprecated), and the apache clients (which is deprecated as well)