HTTPWebResponse + очень Медленный StreamReader

В bin / dexedLibs есть файл. Этот же файл существует в libs

Удалите его в libs, и он должен работать.

Для меня это был android-support-v4.jar.

Надеюсь, это поможет

20
задан John Saunders 8 February 2012 в 18:20
поделиться

5 ответов

DownloadString WebClient - это простая оболочка для HttpWebRequest. Не могли бы вы временно использовать ее и посмотреть, улучшится ли скорость? Если все станет намного быстрее, не могли бы вы поделиться своим кодом, чтобы мы могли посмотреть, что с ним не так?

РЕДАКТИРОВАТЬ:

Похоже, HttpWebRequest соблюдает настройку IE «максимальное количество одновременных подключений», находятся ли эти URL-адреса в тот же домен? Вы можете попробовать увеличить лимит подключений, чтобы посмотреть, поможет ли это? Я нашел эту статью о проблеме:

По умолчанию вы не можете выполнить больше чем 2-3 асинхронных HttpWebRequest (зависит на ОС). Чтобы отменить это (самый простой способ, ИМХО) не забывайте добавить это под раздел в конфигурации приложения файл:

<system.net>
  <connectionManagement>
     <add address="*" maxconnection="65000" />
  </connectionManagement>
</system.net>
8
ответ дан 30 November 2019 в 00:35
поделиться

HttpWebRequest может занять некоторое время для определения настроек прокси . Попробуйте добавить это в конфигурацию вашего приложения:

<system.net>
  <defaultProxy enabled="false">
    <proxy/>
    <bypasslist/>
    <module/>
  </defaultProxy>
</system.net>

Вы также можете увидеть небольшой прирост производительности от буферизации считывания, чтобы уменьшить количество вызовов к сокету операционной системы:

using (BufferedStream buffer = new BufferedStream(stream))
{
  using (StreamReader reader = new StreamReader(buffer))
  {
    pageContent = reader.ReadToEnd();
  }
}
15
ответ дан 30 November 2019 в 00:35
поделиться

Вы пробовали ServicePointManager.maxConnections? Я обычно устанавливаю 200 для подобных вещей.

1
ответ дан 30 November 2019 в 00:35
поделиться

У меня была та же проблема, но хуже всего. response = (HttpWebResponse) webRequest.GetResponse (); в моем коде задерживается примерно на 10 секунд перед запуском нового кода, и после этого загрузка переполнила мое соединение.

ответ Курта defaultProxy enabled = "false"

решил проблему. теперь ответ приходит почти мгновенно, и я могу загрузить любой http-файл на максимальной скорости моего соединения :) извините за плохой английский

1
ответ дан 30 November 2019 в 00:35
поделиться

Я обнаружил, что метод Application Config не работает, но проблема все еще связана с настройками прокси. Мой простой запрос раньше занимал до 30 секунд, теперь он занимает 1.

public string GetWebData()
{
            string DestAddr = "http://mydestination.com";
            System.Net.WebClient myWebClient = new System.Net.WebClient();
            WebProxy myProxy = new WebProxy();
            myProxy.IsBypassed(new Uri(DestAddr));
            myWebClient.Proxy = myProxy;
            return myWebClient.DownloadString(DestAddr);
}
1
ответ дан 30 November 2019 в 00:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: