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

Передача параметров веб сервису, и разбор полученного ответа

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

В предыдущей статье мы проверяли орфографию с помощью веб сервиса от Яндекса. Сегодня  мы  создадим еще одну обработку с проверкой орфографии, но усложним задачу, если почитать документацию по яндекс спеллер API  можно узнать, что проверка  текста возможна на 3 языках:

  • ru – русский;
  • uk – украинский;
  • en – английский.

Также можно управлять параметрами   проверки:  таблицу берм из описания API  спеллера. Это кстати неправильно по WSDL мы должны получить полное описание сервиса, а тут есть параметр, который вычислить без чтения документации невозможно, но главное что документация есть.

Значение (десятичное)

Описание (пример)

1

Пропускать слова, написанные заглавными буквами, например, "ВПК".

2

Пропускать слова с цифрами, например, "авп17х4534".

4

Пропускать интернет-адреса, почтовые адреса и имена файлов.

8

Подсвечивать повторы слов, идущие подряд. Например, "я полетел на на Кипр".

16

Пропускать слова, написанные латиницей, например, "madrid".

32

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

128

Отмечать слова, написанные латиницей, как ошибочные.

256

Не использовать словарное окружение (контекст) при проверке. Опция полезна в случаях, когда на вход сервиса передается список отдельных слов.

512

Игнорировать неверное употребление ПРОПИСНЫХ/строчных букв, например, в слове "москва".

 

Для того чтобы использовать несколько параметров  их значение просто надо сложить вместе.  Ну и указание формата проверяемого текста : plain - текст без разметки (значение по умолчанию) или  html - HTML-текст.

 

Для установки параметров добавим к нашей  предыдущей обработке дополнительную  форму с незатейливым название «Настройки» Выглядеть она будет так:

 Изображение

 

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

Сначала смотрим, что мы должны передать веб сервису:

 Изображение

 

Операции checkTexts мы должны передать параметр с типом CheckTextRequest, который состоит из  атрибутов: lang, options, format, text.

Код, который осуществляет это следующий:

 

 

WSОпределение = Новый WSОпределения("http://speller.yandex.net/services/spellservice?WSDL","", "");      
	    WSПрокси = Новый WSПрокси(WSОпределение, 
"http://speller.yandex.net/services/spellservice" , "SpellService", "SpellServiceSoap12" );
	   
	   
	    // Получаем описание параметра веб сервиса
	    ТипWSПараметра = WSПрокси.ФабрикаXDTO.Пакеты.Получить("http://speller.yandex.net/services/spellservice").Получить("CheckTextRequest");

    //Создаем параметр на основе типа и заполняем значение параметра
    WSПараметр	    = WSПрокси.ФабрикаXDTO.Создать(ТипWSПараметра);
	    WSПараметр.lang	  = ЯзыкиПроверки;
	    WSПараметр.options = Параметры;
	    WSПараметр.format  = ТипТекста;
	    WSПараметр.text	   =текст;
	    РезультатВебОперации =  WSПрокси.checkTexts(WSПараметр);

 

 

 

Заметьте, для облегчения  понимания работы с веб сервисом я использовал  Wsссылку из структуры метаданных конфигурации, но работаем мы с динамической ссылкой.

Параметры передали, теперь можно обрабатывать результат,  в предыдущем примере мы это сделали без проблем, запускаем обработку и … у нас выскакивает ошибка, почему? У нас немного не тот формат результата, который возвращается у  операции  checkText формат результата SpellResult (http://speller.yandex.net/services/spellservice) а у операции checkTexts формат другой CheckTextsResponse (http://speller.yandex.net/services/spellservice),

который состоит уже из SpellResult – ов.  Посмотрим, как выглядит ответ сервера в XML формате, воспользовавшись soapUI.

 Изображение

Модифицированный код разбора результата будет такой

 

для каждого строки1 из РезультатВебОперации.ArrayOfSpellResult.SpellResult цикл
			   
			     для каждого строки из строки1.error цикл
			    стр0= ВариантыНаписания.Добавить();
			    стр0.слово= строки.word;
			    стр0.Позиция = строки.pos;
			    для каждого вариантыЗамены из строки.s цикл
				   стр=слова.добавить();
				   стр.слово=строки.word ;
				   стр.ВариантНаписания= вариантыЗамены;
				   стр.строка = строки.row;
				   стр.Позиция = строки.pos;
			    конеццикла;
			    конеццикла;
	   
	    конеццикла;

 

 

как видите, мы просто спустились по структуре ХМЛ до уровня, на котором уже есть нужные нам данные.

Пример обработки доступен по ссылке: http://goo.gl/JZ9Ag

 

 
0
Читайте также
1С бухгалтерия и настройка сервера 1С
Настройка и установка 1С сервера возможна в 2-х вариантах клиент-серверное приложение и файл-серверное приложение
Установка PostgreSQL 9.0.3-3.1C на Windows Server 2008 x64
"Windows Server 2008 x64 Как установить PostgreSQL 9.0.3-3.1C"
Оператор "В ИЕРАРХИИ" в запросе
Принцип действия оператора в "Иерархии"
Разработки
Автоматическое резервное копирование: Effector saver 3
Резервное копирование методом архивирования баз данных
Журнал регистрации изменений во внешней БД MS SQL Server
Журнал регистрации в 1С доработанный
Еще от автора
≡ к списку статей