новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума

Веб сервис. Получаем погоду в нашем регионе.

  • Добавить свою публикацию
  • для этого требуется регистрация

Для того чтобы разобраться как работать с веб сервисами нет ничего лучше чем практический пример. Давайте попробуем получить погоду в нашем регионе, используя веб сервис http://www.webservicex.com/globalweather.asmx?wsdl

Сначала добавим статическую ссылку к нам в  конфигурацию.

Изображение
Назовем ее «Погода». Если вы теперь откроете эту статическую ссылку, то увидите

приблизительно такую структуру данных этого веб сервиса

 Изображение

Нас интересуют операции: GetWeather и GetCitiesByCountry с соответствующими параметрами (по их названиям не трудно догадаться какие данные возвращают эти операции). К сожалению, отсутствует операция, которая выдает перечень стран. Ну, ничего, думаю, как на английском будет Россия, и Украина мы знаем.

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

Внешний вид ее будет  довольно простой, список стран (Украина и Россия), список доступных городов для этих стран (будем получать от веб сервиса) и погода для конкретного города (получаем от веб сервиса). Внешний вид такой:

 Изображение

Теперь напишем код для получения списка городов из нашего веб сервиса. На скриншоте  стрелками показано куда, и какую информацию нужно вносить, чтобы мы могли  обработать ответ веб сервиса.  Веб сервис возвращает ответ в виде ХМЛ. Я сначала его сохраняю в файл,  а потом разбираю.

 Изображение

код  процедуры получения списка городов следующий:

 

 

 

&НаСервере
Процедура СписокГородов(Страна)
	     города.Очистить(); // очищаем список городов
	     
	    Прокси = WSСсылки.Погода.СоздатьWSПрокси("http://www.webserviceX.NET", 
"GlobalWeather", "GlobalWeatherSoap");
	    РезультатВебОперации = Прокси.GetCitiesByCountry(Страна);
	    //записать результат в файл
	    текст= новый ТекстовыйДокумент ;
	    текст.УстановитьТекст(РезультатВебОперации);
	    текст.Записать("City.xml");
	    //теперь прочитаем файл
	    // в узле с именем City находиться название города
	    //его и записываем в таблицу
	   
	    Чтение = Новый ЧтениеXML;
	    Чтение.ОткрытьФайл("City.xml");
	    Пока Чтение.Прочитать() Цикл
			    Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
				   ИмяУзла = Чтение.Имя;
				   если ИмяУзла="City" тогда
						   естьНазвание=1;
				   иначе
						   естьназвание=0;
			    	    конецесли;
				   Пока Чтение.ПрочитатьАтрибут() Цикл
						   ТипУзла = Чтение.ТипУзла;
						   Имя = Чтение.Имя;
						   Значение = Чтение.Значение;
				   КонецЦикла;
			    ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.Текст Тогда
				   если естьНазвание=1 тогда
						   строка=города.Добавить();
						   строка.Название=Чтение.Значение;
				   конецесли;
			    ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
			    КонецЕсли;
	    КонецЦикла;
	    города.Сортировать("Название");
КонецПроцедуры

 

 

 

 

При активизации любой строки со списком городов вызываем следующий код:

 

 

&НаСервере
Процедура Погода(город,страна);
	    этаформа.Погода.Очистить();
	    Прокси = WSСсылки.Погода.СоздатьWSПрокси("http://www.webserviceX.NET", 
"GlobalWeather", "GlobalWeatherSoap");
	    РезультатВебОперации = Прокси.GetWeather(город,страна);
	    текст= новый ТекстовыйДокумент ;
	    текст.УстановитьТекст(РезультатВебОперации);
	    текст.Записать("weather.xml");
	    Чтение = Новый ЧтениеXML;
	    Чтение.ОткрытьФайл("weather.xml");
	    Пока Чтение.Прочитать() Цикл
			    Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
				   ИмяУзла = Чтение.Имя;
				   если ИмяУзла"CurrentWeather" тогда
						   естьНазвание=1;
				   иначе
						   естьназвание=0;
				   конецесли;
				   Пока Чтение.ПрочитатьАтрибут() Цикл
						   ТипУзла = Чтение.ТипУзла;
						   Имя = Чтение.Имя;
						   Значение = Чтение.Значение;
				   КонецЦикла;
			    ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.Текст Тогда
				   если естьНазвание=1 тогда
						   строка=погода.Добавить();
						   строка.Параметр=ИмяУзла;
						   строка.Значення=Чтение.Значение;
						  
				   конецесли;
			    ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
			    КонецЕсли;
	    КонецЦикла;
	   
КонецПроцедуры

 

 

 

Он практически идентичен предыдущему, только сейчас мы обращаемся к  операции GetWeather, и получаем данные погоды в конкретном городе.

В принципе это минимум для работы с веб сервисами.

 

 
0
Читайте также
Встраиваем Silverlight-приложение в любую форму 1С: Предприятие
Приложение Silverlight помогаем втроить в 1С Предприятие
Работа с веб-страницами средствами 1С
Принципы работы с вебстраницами
Разработки
Рассылка писем из 1с, ver. 2.0
Обработка для рассылки писем
Розыгрыш 1с "Сканер отпечатка пальца"
Отпечаток пальца скан. Розыгрыш
Еще от автора
≡ к списку статей