URLConnection, como pegar o retorno

Bom dia a todos!

Ontem estava desenvolvendo uma rotina para fazer a validação das aplicações nos clientes.

Uso Seam e JSF, as demais aplicações já estão vindo ate o servidor com todos os parâmetros necessários tudo ok, isso via URLConnection, agora preciso retorna um objeto para as aplicações que
que vieram ate meu servidor fazer a validação, mas não estou conseguindo.

Alguém já fez isso ou tem alguma sugestão de como retornar um objeto para as aplicações que vierem até o meu servidor por URLConnection?

Obrigado até mais.

Desde já muito agradecido.

Já pensou em fazer isso com Web Services amigo?

Sim, já pensei sim. Mas não cheguei a implementar ainda.

Você teria algum exemplo para eu me basear, se puder me ajudar agradeço.

Até mais.

Você poderia trabalhar com web services REST por ser bem mais simples de aprender e implementar.

aqui um tutorial bom para começar:
http://www.k19.com.br/artigos/criando-um-webservice-restful-em-java/

espero ter ajudado.

Ajudou sim, muito obrigado, vou começar a estudar.

dan20 você já deve ter usado esse recurso.

Se sim, me tira uma duvida, quando uma aplicação de um servidor externo acessar minha aplicação como ficaria o retorno para ele?

Obrigado, até mais.

Bem, pelo que entendi você tem uma aplicação cliente fazendo alguma requisição ao seu servidor para validação, e seu servidor retornará uma resposta ao cliente. No caso de usar web sevices esse retorno poderá ser um xml ou json, e sua aplicação cliente deverá ter algum mecanismo para ler essas informações.

Como o dan20 disse você pode fazer esse retorno com xml ou json mesmo… Você pode implementar isso usando o próprio vRaptor que pode te ajudar bastante com os Results que tem nele…
E pra fazer acesso ao servidor evite fazer isso na ‘mãozona’ com URLConnection, utilize a HttpClient da apache ela provê mecanismos mais elaborados para acessar conteúdos web.

http://hc.apache.org/httpclient-3.x/
http://www.vogella.com/articles/ApacheHttpClient/article.html

para obter o resultado da requisição é só chamar o connection.getInputStream():

String result = readStream(connection.getInputStream());

Aqui está o readStream

public static String readStream(InputStream in) {
		BufferedReader reader = null;
		StringBuilder builder = new StringBuilder();
		try {
			reader = new BufferedReader(new InputStreamReader(in));
			String line = null;
			while ((line = reader.readLine()) != null) {
				builder.append(line + "\n");
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (reader != null) {
				try {
					reader.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		return builder.toString();
	}

Ramon Pires, obrigado também pela ajuda.

Dessa forma criei uma página simples e estou pegando todo o retorno.

Por exemplo:

CONTACT_NAME = XXXXXX
CONTACT_EMAIL = XXXXXX
EXPIRATION_DATE = XXXXX

Mas agora perguntado a todo mundo, Isso me parece um pouco sem proteçao, vou ler o arquivo e usar os dados que preciso, essa é a melhor prática, na minha mente eu retornaria um OBJECT com todos os dados.

O que me dizem.

Lembrando que ainda estou estudando todas as outras possibilidades.

Criptografa a resposta a ser enviada então…

jweibe, obrigado!

Opa, estava pensando nisso já, uma criptogrfia RSA resolve tudo.

Mas então essa é a forma correta de fazer isso que estou implementando?

Obrigado, até mais.

[quote=Danilo Carvalho] jweibe, obrigado!

Opa, estava pensando nisso já, uma criptogrfia RSA resolve tudo.

Mas então essa é a forma correta de fazer isso que estou implementando?

Obrigado, até mais.[/quote]

Cara só para entender a situação as aplicações java que estarão nos clientes tem alguma autenticação para ser feita no servidor?
Sei la cada ponto remoto seu tem um hash que o identifique no servidor? Se tiver é só fazer um filtro para verificar este acesso,
se que estiver acessando não for identificado a requisição será negada, pra ajudar na segurança você pode usar HTTPS.
Quanto a resposta você criptografa ela e devolve pro cliente e la no cliente você descriptografa ela, acho que isso deve resolver seu
problema.

jweibe, é isso mesmo.

Só que cada cliente ao acessar o meu servidor envia o numero da sua licença que é um guid que é e gerada e entregue junto a a aplicação, no meu servidor ficam o restante dos dados como por exemplo a data de expiração, assim o cliente
precisa passar no meu servidor para buscar esse dado e mais alguns.

Obrigado, agora acho que estou quase lá.