|
Яндекс карты: HTTPСоединение с сайтом работает на 8.2, но не работает на 8.1 | ☑ | ||
---|---|---|---|---|
0
skorm
03.07.13
✎
15:09
|
Доброго времени суток!
Столкнулся с такой проблемой: есть обработка на 8.2, которая получает координаты (широту и долготу) по адресу. Работает на ура в обычном приложении под 8.2, но метод "получить()" объекта "HTTPСоединение" не хочет работать под 8.1. Кто в теме, помогите пжлст! |
|||
1
skorm
03.07.13
✎
15:10
|
Вот код:
(идентичный на 8.2 и 8.1) Перем _КаталогВременныхФайлов; Перем ПроксиСервер; Процедура КнопкаСформироватьНажатие(Кнопка) // Вставить содержимое обработчика. ПроксиСервер = Новый ИнтернетПрокси; ПроксиСервер.Пользователь = "vvk"; ПроксиСервер.Пароль = "Dhtq-07!"; Яндекс = Новый HTTPСоединение("geocode-maps.yandex.ru",,"vvk","Dhtq-07!",ПроксиСервер); Для Каждого Строка Из ТаблицаАдресов Цикл Если Строка.Представление = "" тогда Продолжить; КонецЕсли; Строка.Широта = 0; Строка.Долгота = 0; Адрес = Строка.Представление; ВременныйФайл = _КаталогВременныхФайлов + "Yandex_geocode_81"; Попытка Яндекс.Получить("/1.x/?geocode=" + Адрес + "&results=10", ВременныйФайл); Исключение Сообщить("Ошибка при попытке геокодировать по яндексу адрес: " + Адрес); Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; ///// ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл(ВременныйФайл); ПостроительDOM = Новый ПостроительDOM; ДокументДОМ = ПостроительDOM.Прочитать(ЧтениеXML); СписокText = ДокументДОМ.ПолучитьЭлементыПоИмени("text"); СписокPos = ДокументДОМ.ПолучитьЭлементыПоИмени("pos"); СписокPrecision = ДокументДОМ.ПолучитьЭлементыПоИмени("precision"); Если (СписокText.Количество() = 0) ИЛИ (СписокPos.Количество() = 0) Тогда Продолжить; КонецЕсли; Если СокрЛП(СписокPrecision[0].ТекстовоеСодержимое) = "exact" ИЛИ СокрЛП(СписокPrecision[0].ТекстовоеСодержимое) = "number" Тогда Строка.Точность = "координаты успешно получены"; Координаты = СписокPos[0].ТекстовоеСодержимое; Разделитель = Найти(Координаты," "); Строка.Широта = Число(Сред(Координаты, Разделитель + 1)); Строка.Долгота = Число(Лев(Координаты, Разделитель - 1)); Иначе Строка.Точность = "не удалось получить координаты по адресу"; КонецЕсли; ///// КонецЦикла; КонецПроцедуры Процедура ПриОткрытии() // Вставить содержимое обработчика. НоваяСтрока = ТаблицаАдресов.Добавить(); НоваяСтрока.Представление = "г.Томск, Фрунзе проспект, д. 1"; КонецПроцедуры _КаталогВременныхФайлов = "C:\temp\"; |
|||
2
skorm
03.07.13
✎
15:11
|
Не то, вот правильный:
Перем _КаталогВременныхФайлов; Перем ПроксиСервер; Процедура КнопкаСформироватьНажатие(Кнопка) // Вставить содержимое обработчика. ПроксиСервер = Новый ИнтернетПрокси; ПроксиСервер.Пользователь = "vvk"; ПроксиСервер.Пароль = "Dhtq-07!"; Яндекс = Новый HTTPСоединение("geocode-maps.yandex.ru",,,,ПроксиСервер); Для Каждого Строка Из ТаблицаАдресов Цикл Если Строка.Представление = "" тогда Продолжить; КонецЕсли; Строка.Широта = 0; Строка.Долгота = 0; Адрес = Строка.Представление; ВременныйФайл = _КаталогВременныхФайлов + "Yandex_geocode_81"; Попытка Яндекс.Получить("/1.x/?geocode=" + Адрес + "&results=10", ВременныйФайл); Исключение Сообщить("Ошибка при попытке геокодировать по яндексу адрес: " + Адрес); Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; ///// ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл(ВременныйФайл); ПостроительDOM = Новый ПостроительDOM; ДокументДОМ = ПостроительDOM.Прочитать(ЧтениеXML); СписокText = ДокументДОМ.ПолучитьЭлементыПоИмени("text"); СписокPos = ДокументДОМ.ПолучитьЭлементыПоИмени("pos"); СписокPrecision = ДокументДОМ.ПолучитьЭлементыПоИмени("precision"); Если (СписокText.Количество() = 0) ИЛИ (СписокPos.Количество() = 0) Тогда Продолжить; КонецЕсли; Если СокрЛП(СписокPrecision[0].ТекстовоеСодержимое) = "exact" ИЛИ СокрЛП(СписокPrecision[0].ТекстовоеСодержимое) = "number" Тогда Строка.Точность = "координаты успешно получены"; Координаты = СписокPos[0].ТекстовоеСодержимое; Разделитель = Найти(Координаты," "); Строка.Широта = Число(Сред(Координаты, Разделитель + 1)); Строка.Долгота = Число(Лев(Координаты, Разделитель - 1)); Иначе Строка.Точность = "не удалось получить координаты по адресу"; КонецЕсли; ///// КонецЦикла; КонецПроцедуры Процедура ПриОткрытии() // Вставить содержимое обработчика. НоваяСтрока = ТаблицаАдресов.Добавить(); НоваяСтрока.Представление = "г.Томск, Фрунзе проспект, д. 1"; КонецПроцедуры _КаталогВременныхФайлов = "C:\temp\"; |
|||
3
vs1c
03.07.13
✎
16:17
|
"не хочет работать под 8.1" - как это выглядит (ошибки, сообщения)?
|
|||
4
oleg_km
03.07.13
✎
16:21
|
действительно, в каком месте ошибка? У меня точно такой же УРЛ: geocode-maps.yandex.ru/1.x/?&geocode=
|
|||
5
ИС-2
naïve
03.07.13
✎
16:27
|
что будет, есди 8.2 запустить в режиме совместимости? Может фаервол, что-то блокирует
|
|||
6
skorm
05.07.13
✎
08:35
|
Решил задачу по-другому - из 8.1 цепляюсь к 8.2 посредством COM-соединения
|
|||
7
vs1c
05.07.13
✎
19:07
|
Ну, что - молодец!
|
|||
8
artems
05.07.13
✎
19:48
|
Странно что под 8.1 не работает
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |