Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
298 / 260 / 108
Регистрация: 26.10.2012
Сообщений: 810

Не проходят WebRequest к серверу

29.08.2016, 10:58. Показов 1287. Ответов 1

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Работаю с картографической системой OpenStreetMap через Web запросы. Мне надо получить список объектов в области (прямоугольник [минимальная долгота - максимальная долгота; минимальная широта - максимальная широта]).
Я формирую на основе области WebRequest и отпраляю его на сервер, на выходе ожидаю получить список записей.

Первая проблема: в заданной области может оказаться слишком много объектов, и сервер возвратит ошибку.
(понятно, что число объектов в тайге и число объектов в городе в областях равного размера может быть на порядок разным, а я заранее не знаю примерное число объектов в запрашиваемой области)
Тогда я делю область на 4 меньших подобласти и загружаю по рекурсии данные в каждой них.
Вроде бы тут проблема решается.

Вторая проблема:
В итоге формируются несколько WebRequest, но они работают нестабильно: в 90% случаев программа не регулярно зависает на каком-то из запросов. Хотя запросы корректные, в браузере через них данные скачиваются.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
void GetXmlsFromServer(SquareBase square, List<XDocument> xDocuments, int iteration = 1)
        {            
            if(iteration > 4) throw new Exception("Что-то не так");
 
            //...формирование requestStr 
            var request = WebRequest.Create(requestStr.ToString());
            request.Timeout = 20000;
            request.Proxy.Credentials = CredentialCache.DefaultCredentials;
            
            Stream stream = null;
            WebResponse responce = null;
            try
            {
                Debug.WriteLine("Web Request: " + requestStr);
                responce = request.GetResponse();
                stream = responce.GetResponseStream();
 
                var xDocument = XDocument.Load(stream); //зависает тут, доступа к данным потока нет 
                xDocuments.Add(xDocument);
            }
            catch (WebException exception)
            {
                Debug.WriteLine("Fail: " + exception.Message);
                stream?.Dispose();
                responce?.Dispose();
 
               //..Формирование leftup, leftdown ...
 
                GetXmlsFromServer(leftup, xDocuments, iteration + 1);
                GetXmlsFromServer(rightup, xDocuments, iteration + 1);
                GetXmlsFromServer(rightdown, xDocuments, iteration + 1);
                GetXmlsFromServer(leftdown, xDocuments, iteration + 1);
            }
            finally
            {
                stream?.Dispose();
                responce?.Dispose();
            }
        }
Пример того, что пишется в лог(И висит на последней строке):
Кликните здесь для просмотра всего текста

Web Request: http://api.openstreetmap.org/a... 5.03432918
The thread 0x1834 has exited with code 0 (0x0).
Exception thrown: 'System.Net.WebException' in System.dll
Fail: The remote server returned an error: (400) Bad Request.
Web Request: http://api.openstreetmap.org/a... 5.03432918
Web Request: http://api.openstreetmap.org/a... 5.03432918


Может быть я что-то делаю не так? Помогите.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.08.2016, 10:58
Ответы с готовыми решениями:

Не проходят пакеты
Есть роутер, внутренние сети и подключение IPSEC к другому филиалу (тоже роутер cisco). Нужно подключение pptp для получения доступа к...

не проходят куки
&lt;?php $visitCounter=0; if(isset($_COOKIE)) $visitCounter=$_COOKIE; $visitCounter++; $lastVisit=&quot;&quot;; if(isset($_COOKIE)) ...

Не проходят параметры
Имеется селект и тектовое поле &lt;select id=&quot;select_lot&quot;&gt; &lt;option value=&quot;1&quot;&gt;Ноутбук&lt;/option&gt; &lt;option...

1
 Аватар для Vort_
200 / 200 / 78
Регистрация: 10.07.2012
Сообщений: 409
29.08.2016, 13:16
Похоже, просто API OSM`а глючит:
https://wiki.openstreetmap.org... orm_Status
"Slow/not responding: heavy trafic & HTTP errors"

Добавлено через 2 минуты
ещё может быть проблема в нарушении
http://wiki.openstreetmap.org/... age_policy

Добавлено через 2 минуты
и ещё: если данные нужны только для чтения (и несвежесть на несколько минут не страшна), то лучше использовать не основной API, а Overpass API - там и лимиты попроще (насколько я помню)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.08.2016, 13:16
Помогаю со студенческими работами здесь

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

Поток и WebRequest
Здравствуйте. Объясните пожалуйста этот код: *string URI = @&quot;https://oauth.vk.com/token&quot;; string Parameters =...

WebRequest и кирилица
пытаюсь получить имя файла таким вот способом private static string GetFileName(string url) { WebRequest...

Не работает WebRequest
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(&quot;https://api.pinnaclesports.com/v1/client/balance&quot;); //request.Proxy = new...

WebRequest Headers
Добрый день, проблема в следующем, не могу отправить простейший POST запрос. Что нужно сделать: curl -X POST \ -H...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru