1

我的应用程序访问互联网以从给定链接下载文件。我正在使用我研究所的互联网连接,它使用代理设置。

为了让我的应用程序能够从 Internet 下载文件,我需要打开我的 Internet 浏览器,提供连接的用户名和密码并保持浏览器运行,只有这样我的应用程序才能下载完整的文件,如果我不这样做做这些事情我的应用程序正常运行并在所需位置创建一个文件,但显示文件大小为零,这很可能是因为它无法直接连接到互联网。

如果无法连接到互联网,如何让我的应用程序向我显示一个对话框,询问用户名和密码以连接到互联网。

谢谢 :-)

4

2 回答 2

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
于 2012-05-28T14:25:30.497 回答
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
                                  }

上面的代码提供了有关互联网连接是否可用的信息,但它不知道互联网连接是否需要身份验证,因此在检查上述条件后,我尝试访问下载链接,然后使用此逻辑。

这个stackoverflow查询中提到了我使用的逻辑(如果互联网需要身份验证才能实际连接才能下载?)....希望这些信息对有需要的人有所帮助。

于 2012-06-06T11:56:37.077 回答