从Android密码保护网址下载文件失败,而相同的代码在桌面

时间:2016-07-23 09:51:01

标签: java android ntlm

我想使用NTLM身份验证从受密码保护的URL下载文件。我尝试了http://www.muneebahmad.com/index.php/archives/127

中的以下代码
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Authenticator;
import java.net.HttpURLConnection;
import java.net.PasswordAuthentication;
import java.net.URL;

public class NtlmTest01 {

    public static void main(String[] args) throws Exception {

        String urlStr = “http://example.com/root/action.dll?p1=value1?;
        String domain = “”; // May also be referred as realm
        String userName = “CHANGE_ME”;
        String password = “CHANGE_ME”;      

        String responseText = getAuthenticatedResponse(urlStr, domain, userName, password);

        System.out.println(”response: ” + responseText);
    }

    private static String getAuthenticatedResponse(final String urlStr, final String domain, final String userName, final String password) throws IOException {

        StringBuilder response = new StringBuilder();

        Authenticator.setDefault(new Authenticator() {
            @Override
            public PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(domain + “\\” + userName, password.toCharArray());
            }
        });

        URL urlRequest = new URL(urlStr);
        HttpURLConnection conn = (HttpURLConnection) urlRequest.openConnection();
        conn.setDoOutput(true);
        conn.setDoInput(true);
        conn.setRequestMethod(”GET”);

        InputStream stream = conn.getInputStream();
        BufferedReader in = new BufferedReader(new InputStreamReader(stream));
        String str = “”;
        while ((str = in.readLine()) != null) {
            response.append(str);
        }
        in.close();     

        return response.toString();
    }

}

在桌面上执行时工作正常,文件下载成功。但是,当我在Android中尝试相同的代码时,它会提供java.io.FileNotFoundException。我无法弄清楚确切的问题。此外,代码中使用的所有类都是内置类,并且在Java和Android API中很常见。

0 个答案:

没有答案