我的应用程序访问互联网以从给定链接下载文件。我正在使用我所使用代理设置的学院的互联网连接。
我的应用程序能够从互联网上下载文件我需要打开我的互联网浏览器,提供连接的用户名和密码并保持浏览器运行,只有这样我的应用程序才能下载完整的文件,如果我不要做我的应用程序正常运行的这些事情,并在所需的位置创建一个文件,但显示文件大小为零,这很可能是因为它无法直接连接到互联网。
如果无法使用,我如何让我的应用程序向我显示一个对话框,询问用户名和密码以连接到互联网。
谢谢:-)
答案 0 :(得分:0)
创建将通过其进行文件传输的连接对象时,必须指定您正在使用代理所期望的任何形式的身份验证凭据。我不知道你在Java for Android中做了什么,但在.NET中我这样做:
LogHandler.Log(LogHandler.LogType.Debug, "Configure proxy credentials");
// Proxy address and port
ec2Config.ProxyHost = ConfigurationManager.AppSettings["LocalProxyHost"];
ec2Config.ProxyPort = Convert.ToInt32(ConfigurationManager.AppSettings["LocalProxyPort"]);
// Create a dummy webrequest so we can set proxy credentials (to stop the proxy spitting 407s at us)
HttpWebRequest dummyRequest = (HttpWebRequest)WebRequest.Create(ec2Config.ServiceURL);
dummyRequest.Proxy.Credentials = CredentialCache.DefaultCredentials;
#pragma warning disable 168
HttpWebResponse myHttpWebResponse = (HttpWebResponse)dummyRequest.GetResponse();
#pragma warning restore 168
答案 1 :(得分:0)
我开发了这个逻辑,它需要大量的工作,但它有助于我检测是否存在其他问题,如代理或其他问题,因为正常的互联网连接管理器无法检测是否需要验证。
final ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
final NetworkInfo activeNetwork = conMgr.getActiveNetworkInfo();
if (activeNetwork != null && activeNetwork.getState() == NetworkInfo.State.CONNECTED) {
//Do what ever you wish to do
} else {
// Display message internet connection not available
}
上面的代码提供了有关互联网连接是否可用的信息,但它无法判断互联网连接是否需要验证,因此在检查上述条件后,我尝试访问下载链接,然后使用此逻辑。 / p>
我在这个stackoverflow查询(If internet requires authentication for actually connecting to be able to download?)中提到了我使用的逻辑....希望这些信息可以帮助有需要的人。