Consumindo serviços do Flickr com Java no Netbeans

O site de hospedagem e compartilhamento de imagens Flickr disponibiliza para os desenvolvedores acesso as suas funcionalidades através de uma API de serviços REST. Com esta API o desenvolvedor pode soltar a imaginação e criar novos aplicativos, inclusive interagindo também com outros serviços disponíveis na web. Quem estiver interessado em conhecer os aplicativos criados utilizando a API do Flickr pode acessar o App Garden. Este site é uma iniciativa da própria empresa para reunir os aplicativos que utilizam o Flickr.

Mas por que eu precisaria do Netbeans para consumir os servicos do Flickr?

Não, você não precisa do Netbeans para utilizar os serviços. Entrentanto, a IDE disponibiliza um esquema de drag and drop que facilita muito algumas parte do trabalho. Nós veremos neste tutorial como utilizar este esquema para ter acesso a álbuns e fotos de forma simples e rápida.

Lembrando que o Netbeans auxilia no acesso à serviços de diversas outras APIs como por exemplo, Facebook, Google, Delicious, Twitter, Yahoo e muitas outras que não serão tratadas neste post. Porém a estratégia utilizada nas demais APIs é semelhante e você podera tomar como base este tutorial para trabalhar com outros serviços.

1º Passo

A primeira coisa a se fazer é criar uma conta no Yahoo(caso você já não tenha) para ter acesso ao Flickr. Ter acesso ao Flickr é importante porque você precisará registrar um aplicativo no App Garden.

2º Passo

Com acesso ao Flickr você deve ir a esta página para Criar um novo aplicativo. Precisamos desta etapa porque o Flickr só fornece permissão para uso dos serviços se a aplicação tiver uma chave e um segredo específicos para ela. O Flickr não cobra nada para registrar a aplicação e fornecer a chave. Nós utilizaremos esta chave e o segredo alguns passos a frente.

Ao acessar a página de criação de aplicativo você verá o seguinte:

flickrRegistroApp

Como nosso objetivo não é comercial escolha a opção SOLICITAR UMA CHAVE NÃO COMERCIAL.

3º Passo

Agora escolha um nome para sua aplicação, forneça uma pequena descrição, aceite os termos de compromisso e clique em ENVIAR. Após enviar você terá acesso a sua chave e seu segredo da mesma forma que a figura abaixo:

flickrRegistroApp2

Anote a chave e o segredo em algum lugar para usarmos logo mais.

4º Passo

Vamos partir para o Netbeans agora.

Crie um Novo Projeto Java para desktop.

5º Passo

Agora crie uma classe com um método main.

Testaremos os serviços dentro deste método. Será nele que  iremos arrastar e soltar um método do serviço do Flickr.

6º Passo

Agora vá até a aba Serviços que fica ao lado das abas Arquivos e Projetos   abaservicos e busque o seguinte nó da árvore Flickr –> Photo Service –> services –> rest –> photosets_getList e arraste e solte o método photosets_getList para dentro do método main da classe que você criou. Aparecerá a seguinte tela:

turservicosflickr

Apenas clique em OK pra que os códigos necessários terminem de ser gerados.

Após o OK será gerado o seguinte código para você:


import org.netbeans.saas.flickr.FlickrPhotoService;
import org.netbeans.saas.RestResponse;

public class Main {

public static void main(String[] args) {

// início do código que será gerado -------------------------
try {
String userId = null;

RestResponse result = FlickrPhotoService.photosetsGetList(userId);
if (result.getDataAsObject(flickr.photoservice.flickrresponse.Rsp.class) instanceof flickr.photoservice.flickrresponse.Rsp) {
flickr.photoservice.flickrresponse.Rsp resultObj = result.getDataAsObject(flickr.photoservice.flickrresponse.Rsp.class);
}
//TODO - Uncomment the print Statement below to print result.
//System.out.println("The SaasService returned: "+result.getDataAsString());
} catch (Exception ex) {
ex.printStackTrace();
}
// fim do código que será gerado -------------------------------
}
}

O objeto resultObj é responsável, neste caso, por conter a lista de todos os álbuns de um usuário. É este objeto que iremos manipular.

Para termos acessos a lista dos álbuns, podemos utilizar este objeto da seguinte forma:


resultObj.getPhotosets().getPhotoset()

Este método retorna uma lista de álbuns.

Para testar, vamos listar na tela o id de todos os albuns do seu Flickr da seguinte forma:


import org.netbeans.saas.flickr.FlickrPhotoService;
import org.netbeans.saas.RestResponse;

public class Main {

public static void main(String[] args) {

// início do código que será gerado -------------------------
try {
String userId = null;

RestResponse result = FlickrPhotoService.photosetsGetList(userId);
if (result.getDataAsObject(flickr.photoservice.flickrresponse.Rsp.class) instanceof flickr.photoservice.flickrresponse.Rsp) {
flickr.photoservice.flickrresponse.Rsp resultObj = result.getDataAsObject(flickr.photoservice.flickrresponse.Rsp.class);
// listagem do id de todos os albuns
for (int i = 0; i < resultObj.getPhotosets().getPhotoset().size(); i++) {
System.out.println("Album com id = " + resultObj.getPhotosets().getPhotoset().get(i).getId());
}

}
//TODO - Uncomment the print Statement below to print result.
//System.out.println("The SaasService returned: "+result.getDataAsString());
} catch (Exception ex) {
ex.printStackTrace();
}
// fim do código que será gerado -------------------------------
}
}

Antes de executar é necessário configurar o arquivo .properties responsável pela autenticação, utilizando a chave e o segredo que você pegou no Flickr. Este arquivo foi gerado automaticamente e se encontra no pacote org.netbeans.saas.flickr com o nome flickrphotoserviceauthenticator.properties. Preencha este arquivo com a sua chave e seu segredo.

Pronto, agora ao executar a sua classe será exibida esta tela:

tut

Antes de clicar em OK é necessário copiar o link e colar no navegador para que o site do Flickr dê a permissão para acessar seu serviço.

Ao executar o link no browser aparecerá a seguinte tela:

tut2

Escolha a opção OK, EU AUTORIZO e depois volte para a execução no Netbeans e clique em OK no JDialog de autorização.

Dessa forma seus álbuns serão listados no console do Netbeans.

Dicas

  • O método photosets_getPhotos disponível no serviço é útil para buscar o id e título das fotos de um álbum, neste caso é necessário passar o id do album para conseguir utilizar o método.

A dica está na forma de acessar a lista de fotos. É necessário utilizar o objeto resultObj como é apresentado em seguida:


resultObj.getPhotoset().getPhoto().get(i).getId();

  • O método photos_getInfo disponível no serviço encontra a descrição e o título de uma foto passando o id da foto. Para acessar essas informações você pode utilizar o objeto resultObj da seguinte forma:

resultObj.getPhoto().getDescription();
resultObj.getPhoto().getTitle();

  • O método photos_getSizes disponível no serviço encontra as urls (uma para cada tamanho) de uma foto. O uso deste método precisa também do id da foto. Através dele você pode exibir as fotos na sua aplicação. O objeto resultObj deve ser utilizado da seguinte forma:

resultObj.getSizes().getSize().get(0).getSource();
resultObj.getSizes().getSize().get(1).getSource();
resultObj.getSizes().getSize().get(2).getSource();
resultObj.getSizes().getSize().get(3).getSource();
resultObj.getSizes().getSize().get(4).getSource();

Cada posição da lista retornada é um tamanho diferente da foto.

Conclusao

Este tutorial mostrou os passos necessários para acessarmos a API do Flickr.  Vimos como é simples consumir serviços com o auxilio do Netbeans. A partir deste tutorial você pode explorar outros serviços para construir diversos tipos de aplicações customizadas.

2 comments for “Consumindo serviços do Flickr com Java no Netbeans

  1. Jean
    27 de Junho de 2012 at 10:46

    Bom dia, estou fazendo um trabalho acadêmico, que é exatamente consumir algum serviço web já disponível no Netbeans.
    Gostei muito deste post, porém, tentei faze-lo e não deu certo.
    Ao arrastar o serviço do Flicker para o Main que criei, não cria o código como o que você mostra acima.
    Tentei colocar na mão, mas aparecem inúmeros erros.

    Tem como me tirar essas dúvidas?

    Obrigado.

Deixar uma resposta