вторник, 8 января 2008 г.

Клиент для web-сервиса XML на FLEX.

В данной заметке мы создадим простой web-сервис на C# .Net, а клиентом для нашего сервиса послужит FLEX приложение.



Подробное описание создания и принципов функционирования сервисов XML не входит в рамки данной статьи. Предполагается, что вы обладаете начальными знаниями:
- знаете, как создать web-сервис Hello World (такой сервис создается средой Visual Studio 2005 автоматически, стоит только выбрать File -> New -> Web Site -> ASP.NET web Service);
- на вашей машине установлен IIS (Internet Information Server) и вы знаете, как создать виртуальный каталог и разместить в нем web-сервис;
- вы обладаете навыками работы с flex.


Приступим. Наш сервис будет принимать строку с именем пользователя и «здороваться» – т.е. возвращать строку “Здравствуйте” + введенное имя.



using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : System.Web.Services.WebService
{
    public Service () {}

    [WebMethod]
    public string HelloWorld(string name) {
        return "Здравствуйте, " + name;
    }
}Syhi-подсветка кода



Сервис содержит единственный метод HelloWorld(), который помечен атрибутом [WebMethod] и значит, может быть вызван удаленным приложением. Именно этот метод и будет вызывать Flex приложение.
Опубликуйте сервис по адресу http://localhost/soap1/service.asmx


Теперь создадим клиента на Flex. Нужно использовать <mx:WebService> тег.



<mx:WebService id="s"
  wsdl="http://localhost/soap1/service.asmx?WSDL"
  fault="ДЕЙСТВИЕ_ПРИ_ОШИБКЕ">


  <mx:operation name="ИМЯ_ВЫЗЫВАЕМОГО_МЕТОДА"
    resultFormat="object">

    <mx:request>
    <!-- Здесь необходимо указать параметры
    вызываемого метода -->

    </mx:request>
  </mx:operation>
 
</mx:WebService>Syhi-подсветка кода



Лучше один раз увидеть, чем сто раз услышать:



Осталось добавить недостающие элементы: поле ввода, кнопку и лайбл для вывода результата.



<mx:TextInput id="input1" text="name"
  x="10" y="10"/>


<!-- кнопка для отправки запроса -->
<mx:Button id="button" click="s.HelloWorld.send()"
  x="178" y="10" label="Ok"/>


<!-- лайбл для вывода ответа сервиса -->
<mx:Label id="res" text="{s.HelloWorld.lastResult}"
  x="10" y="85" width="210"/>
Syhi-подсветка кода



Соберем весь код вместе:



<?xml version="1.0" encoding="utf-8"?>
<!-- пример клиента для web-сервиса XML -->
<mx:Application
  xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">


  <mx:WebService id="s"
    wsdl="http://localhost/soap1/service.asmx?WSDL"
    fault="{res.text = 'ОШИБКА!'}">


    <mx:operation name="HelloWorld" resultFormat="object">
      <mx:request>
        <name>{input1.text}</name>
      </mx:request>
    </mx:operation>
       
  </mx:WebService>

  <mx:TextInput x="10" y="10" id="input1"
    text="name"/>

  <mx:Button x="178" y="10" label="Ok" id="button"
    click="s.HelloWorld.send()"/>

  <mx:Label x="10" y="59" text="Ответ сервиса:"
    id="label1" fontWeight="bold"/>

  <mx:Label x="10" y="85" text="{s.HelloWorld.lastResult}"
    width="210" id="res"/>

       
</mx:Application>Syhi-подсветка кода


1 комментарий:

Unknown комментирует...

Спасибо, очень наглядно))