HTTP Service

Talvez alguns se perguntarão, porque HTTP-SERVICE ja no nível iniciante?

Respondo já, é algo prático que mostra resultado de forma a mostrar o que o flex pode fazer, com poucas linhas de código.

Bom, pra muitos só as palavras “HTTP-SERVICE” já dá um nó no cérebro, mas aqui falarei um pouco dele e mostrarei como usar.

Primeiro defino que utilizarei a idéia de componentes, onde voce cria um componente dentro do mesmo projeto e depois em sua aplicacao chama este componente para facilitar o desenvolvimento.

(Obs, ainda nao sei formatar no WordPress de forma que fique bunito que nem nos blogs pagos, se alguem souber, dá um apoio.)

Utilizarei então dois arquivos principais:

  • photosFLK
  • componenteFLK

Primeiro passo

-Crie um projeto (chamarei de photosFLK), isso gera uma aplicacao com o mesmo nome (File > new > flexProject)

- Após criado o projeto, digite este código dentro de sua aplicação:

<?xml version=”1.0″ encoding=”utf-8″?>
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml”
backgroundGradientColors=”[0xFFFFFF, 0xAAAAAA]“
horizontalAlign=”left”
verticalGap=”15″
horizontalGap=”15″ creationComplete=”addListenerToControls()”>
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.events.FlexEvent;
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;

[Bindable]
private var photoFeed:ArrayCollection;

// add a event listener to textInput control using the Event Listeners
// You can search more at addEventListeners on this site
private function addListenerToControls():void {
searchTerms.addEventListener(FlexEvent.ENTER,requestPhotos);
}
// Request photos based on keyword criteria you insert
private function requestPhotos(event:Event):void {
// if the photoService is still loading we cancel to prevent errors
// then we call again.
photoService.cancel();
var params:Object = new Object();
params.format = ‘rss_200_enc’;
params.tags = searchTerms.text;
photoService.send(params);
}
// Handler the result function from HTTPService request you did
// and convert the result into a Array Collection
private function photoHandler(event:ResultEvent):void {
photoFeed = event.result.rss.channel.item as ArrayCollection;
}
// If the HTTPService had errors, we handle it here show an alert message
// like we have in Javascript
private function photoFaultHandler(event:FaultEvent):void {
Alert.show(“Impossible to load or reach photos from services”,”Error”);
}
]]>
</mx:Script>

<mx:HTTPService id=”photoService” showBusyCursor=”true”
url=”http://api.flickr.com/services/feeds/photos_public.gne”
result=”photoHandler(event)” fault=”photoFaultHandler(event)”
/>

<mx:HBox>
<mx:Label text=”Flickr tags or search terms:” />
<mx:TextInput id=”searchTerms” />
<mx:Button label=”Search”
click=”requestPhotos(event)” />
</mx:HBox>

<mx:TileList width=”100%” height=”100%”
dataProvider=”{photoFeed}”
itemRenderer=”componentFlk”>
</mx:TileList>

</mx:Application>

Segundo passo

Agora crie um componente do tipo VBOX, renomeando ele para “componenteFlk”

Digite o código abaixo dentro dos códigos do component.

<?xml version=”1.0″ encoding=”utf-8″?> <mx:VBox xmlns:mx=”http://www.adobe.com/2006/mxml”

width=”125″ height=”125″

paddingBottom=”5″ paddingLeft=”5″ paddingTop=”5″ paddingRight=”5″

horizontalScrollPolicy=”off” verticalScrollPolicy=”off”

horizontalAlign=”center”>

<mx:Image width=”75″ height=”75″

source=”{data.thumbnail.url}”/>

<mx:Text text=”{data.credit}”/>

</mx:VBox>

Terceiro passo

Pronto, agora é só rodar o projeto, clicando no “Play”.

Como este tutorial é somente para ilustar o uso do HTTP Service, defino que:

1-Criamos um projeto e uma aplicacao

2-Criamos um component

3-Definimos de onde viria os dados via HTTP Service. (exemplo abaixo)

<mx:HTTPService id=”photoService” showBusyCursor=”true”
url=”http://api.flickr.com/services/feeds/photos_public.gne”
result=”photoHandler(event)” fault=”photoFaultHandler(event)”
/>

Agora os dados são puxados do site da FLICKR, onde ja possui uma lista de imagens e as respectivas no servidor.

E nosso TileList está usando o componentFlk criado

<mx:TileList width=”100%” height=”100%”
dataProvider=”{photoFeed}”
itemRenderer=”componentFlk”>
</mx:TileList>

Pronto, espero ter ajudado. Passando como utilizar o HTTP Service.

Observe o exemplo de como ficou abaixo…

Boa Sorte!

Advertisement

11 responses to this post.

  1. Só uma correção.
    Em alguns momentos você informa “componenteFlk”, mas, no código, está “componentFlk” (sem o “e”).
    Aguardo os novos tutorias.. vlws!

    Reply

    • Ixi, é mesmo?
      Valeu pela observação,
      Gostaria de fazer mais, mas o tempo está tão maluco que não consigo nem responder as mensagens aqui.

      Mas obrigado pela mensagem e presteza.

      Reply

  2. Posted by Marco on December 5, 2009 at 3:10 am

    Achei o site através de uma busca sobre http service.
    Estou comecando a mexer com Flex ha pouco tempo e me dei de cara com o httpservice que me é muito útil para puxar .xml q uso como banco de dados de leitura.

    O .xml está na raiz do src e em url coloquei url=”bd.xml” para apontar pro diretorio raiz, correto? Compilo em meu pc perfeitamente e faco um Export. Quando eu levo a pasta exportada para outros pcs eu tenho um Fault Error do httpservice como se aparentemente ele não estivesse encontrando o .xml.

    Ja tentei colocar url=”C:\bd.xml”, exportei e levei os arquivos para outro pc onde coloquei o bd.xml no diretorio manualmente em C:\. Infelizmente ocorre o mesmo erro. Não sei o que fazer e talvez voce possa me ajudar.

    Obrigado,
    Marco

    Reply

  3. Ola.

    Amigo.. estou com um problema..

    quando eu abro minha galeria.. imprime as fotos td normal, porém.. quando eu desço a barra de rolabem, e volto para cima, as fotos mudam de posição.. como se fosse aleatorio, e quando clico.. abre a foto certa, mas com a miniatura errada..

    oque pode ser?

    Reply

  4. Posted by Estevan on September 22, 2010 at 4:15 am

    Parabéns pelo blog, ja está nos favoritos !!
    aguardando novidades!!!

    Reply

    • valeu, nao prometo colocar material em breve pois esta uma correria maluca aqui, mas se um projeto que estou vendo, vingar, ai sim, vai tudo para o blog.
      valeu pela visita

      Reply

    • Valeu Estevan, vamos ver se consigo lançar mais materiais, eu gostaria de até montar um grupo de estudos aqui em sao paulo, vamos ver o que da.

      Obrigado.

      Reply

  5. Posted by fredman on October 26, 2010 at 11:10 pm

    Interessante. Poderia mandar este tutorial em pdf.
    Poderia também mandar um tutorial passo-a-passo com conexão e operação com algum Banco de Dado,
    Att,
    Fredman

    Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.