Работает ли клиентский запрос диапазона байтов, когда сервер определяет connection = close? - PullRequest
0 голосов
/ 11 августа 2010

Я пишу мобильное приложение, и мне трудно загружать длинные файлы из Yahoo!сервер, который периодически (примерно каждые три минуты) прерывает загрузку.Мобильное приложение успешно загружает длинные файлы с других серверов через то же медленное соединение для передачи данных.Дамп заголовка HTTP из Yahoo!сервер

D / AsyncDownloadFile (694): поля заголовка: {p3p = [policyref = "http://info.yahoo.co m / w3c / p3p.xml", CP = "CAO DSP COR CUR ADM DEV TAI PSA PSD IVAiIVDi CONI TELO OTPi НАШИ ДЕЛИ САМИ ОТРИ UNRi PUBI IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA PO L HEA PRE LOC GOV "], тип контента = [application / octet-stream], соединение = [закрыть], последнее-модифицированный = [пт, 6 августа 2010 14:47:50 GMT], длина содержимого = [2000000], возраст = [0], сервер = [YTS / 1.17.13], диапазоны принятия = [байты], дата= [Сб, 07 авг. 2010 18:53:02 GMT]}

, что показывает, что он определяет соединение = [закрыть].Другой (не Yahoo!) сервер определяет соединение = [keep-alive], и ​​мое мобильное приложение успешно загружается с него.Итак, у меня есть несколько вопросов:
Что вызывает Yahoo!сервер периодически прерывать загрузку?Что я могу сделать, чтобы избежать периодического прерывания или что я могу сделать, чтобы возобновить прерванную загрузку?Рассматриваются ли запросы на диапазоны байтов, когда сервер определяет соединение = [закрыть]?

То, что я прочитал:

То, что я пробовал:

  • Я пытался установить заголовок http "Соединение"поле "сохранить в живых", но Yahoo!ответом сервера было поле заголовка «Соединение», установленное на «закрыть».
  • Я попытался возобновить соединение, как описано в этот вопрос .Хотя заголовок HTTP от Yahoo!сервер показывает, что он поддерживает запросы диапазона байтов, а ответы диапазона содержимого выглядят корректными (например, content-range = [bytes 387924-1999999 / 2000000]), возобновленные передачи некорректно возобновляются при запуске файла.Мне интересно, связано ли это с установкой соединения = [закрыть].

Поскольку тема заголовков HTTP довольно нова для меня, любые предложения или предупреждения о распространенных подводных камнях приветствуются.

[ОБНОВЛЕНИЕ] Я получил ответ от Yahoo!Техническая поддержка заявляет, что диапазон байтов не поддерживается: «Веб-хостинг Yahoo! не поддерживает заголовок диапазона Accept, так как мы работаем с пулом серверов, и каждый запрос потенциально достигает другого сервера. В ответе вы увидите соединение = [закрыть]заголовок, указывающий на это. "Остается вопрос, можно ли избежать периодических абортов загрузки?(Я пытался запросить Connection = "keep-alive", но это было проигнорировано.)

1 Ответ

0 голосов
/ 12 августа 2010

Я получил ответ от Yahoo!Техническая поддержка объясняет, что запросы диапазона байтов не принимаются: «Веб-хостинг Yahoo! не поддерживает заголовок диапазона Accept, поскольку мы работаем с пулом серверов, и каждый запрос потенциально достигает другого сервера. Вы увидите соединение = [закрыть] взаголовок ответа, указывающий на это. "

Учитывая, что возобновление загрузки невозможно, я спросил, можно ли избежать периодического прерывания загрузки (например, Connection = [keep-alive]).Yahoo!Ответ службы технической поддержки: «Процесс обрабатывается системой, и в настоящее время нет обходных путей».

Хотя это не те ответы, которые мне бы понравились, я отдаю должное Yahoo!техническая поддержка для ответов на вопросы о Yahoo!Поведение сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...