Хобрук: Ваш путь к мастерству в программировании

Невозможно загрузить файл из Интернета через прокси

Мое приложение подключается к Интернету, чтобы загрузить файл по указанной ссылке. Я использую Интернет-соединение своего института, в котором используются настройки прокси.

Чтобы мое приложение могло загружать файл из Интернета, мне нужно открыть свой интернет-браузер, указать имя пользователя и пароль для подключения и оставить браузер работающим, только тогда мое приложение сможет загрузить полный файл, если я этого не сделаю. делаю это, мое приложение работает нормально и создает файл в нужном месте, но показывает, что размер файла равен нулю, что, скорее всего, связано с тем, что оно не может напрямую подключиться к Интернету.

Как сделать так, чтобы в моем приложении отображалось диалоговое окно с запросом имени пользователя и пароля для подключения к Интернету, если это невозможно.

Спасибо :-)

28.05.2012

Ответы:


1

Когда вы создаете объект подключения, через который будет осуществляться передача файла, вы должны указать, что вы используете любую форму учетных данных аутентификации, которую ожидает прокси. Я не знаю, что бы вы сделали на Java для 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
28.05.2012
  • извините, но я тоже не очень понимаю, как реализовать это в java для моего приложения ... спасибо за ваше время ... я очень ценю это :-) 28.05.2012

  • 2

    Я разработал эту логику, это требует много работы, но она помогает мне определить, есть ли какие-то другие проблемы, такие как прокси или другие, поскольку обычный диспетчер подключения к Интернету не может определить, требуется ли аутентификация или нет.

     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 (Если Интернет требует аутентификации для фактического подключения, чтобы иметь возможность загрузки?) .... надеюсь, эта информация поможет нуждающимся.

    06.06.2012
    Новые материалы

    Я собираюсь научить вас Python шаг за шагом
    Привет, уважаемый энтузиаст Python! 👋 Готовы погрузиться в мир Python? Сегодня я приготовил для вас кое-что интересное, что сделает ваше путешествие более приятным, чем шарик мороженого в..

    Альтернатива шаблону исходящих сообщений для архитектуры микросервисов
    Познакомьтесь с двухэтапным сообщением В этой статье предлагается альтернативный шаблон для папки Исходящие : двухэтапное сообщение. Он основан не на очереди сообщений, а на..

    React on Rails
    Основное приложение Reverb - это всеми любимый монолит Rails. Он отлично обслуживает наш API и уровень просмотра трафика. По мере роста мы добавляли больше интерактивных элементов..

    Что такое гибкие методологии разработки программного обеспечения
    Что представляют собой гибкие методологии разработки программного обеспечения в 2023 году Agile-методологии разработки программного обеспечения заключаются в следующем: И. Введение A...

    Ториго  — революция в игре Го
    Наш следующий вызов против ИИ и для ИИ. Сможет ли он победить людей в обновленной игре Го? Обратите внимание, что в следующей статье AI означает искусственный интеллект, а Goban  —..

    Простое развертывание моделей с помощью Mlflow — Упаковка классификатора обзоров продуктов NLP от HuggingFace
    Как сохранить свои модели машинного обучения в формате с открытым исходным кодом с помощью MLFlow, чтобы позже получить возможность легкого развертывания. Сегодня модели упаковки имеют несколько..

    Математика и интуиция - Часть 1
    У каждой математической формулы есть доказательство. Часто эти доказательства слишком сложно понять, поскольку многие из них основаны на индукции, некоторые - на очень сложных наблюдениях, а..