Páginas filhas
  • Intellector 9 - API - Executando Políticas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

====
Usando RESTful - Json

Uma vez que os exemplos acima, via browser, esclareceram envelope/contrato, segue abaixo um exemplo de chamada via httpClient. REST é apenas um estilo de arquitetura, baseado em estados de transferênciaAbaixo um exemplo de execução de política usando como entrada um arquivo JSON com os dados de entrada. O retorno também será um JSON.


Bloco de código
languagejava
themeEclipse
titlePostWSDL
Bloco de código
themeEclipse
linenumberstrue
PostJSON
package br.com.toolstotvs.intellector.util;

import java.io.IOExceptionBufferedReader;

import orgjava.apache.commons.httpclient.HttpClientio.File;
import org.java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;

import org.apache.commons.httpclientcodec.binary.HttpMethodBase64;
import org.apache.commons.httpclient.HttpStatus.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.commonsclient.httpclientmethods.NameValuePairHttpGet;
import org.apache.commonshttp.httpclientclient.methods.GetMethodHttpPost;

/**
* import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

/**
 * Uma classe generica, via linha de comando para enviar arquivos,
* e, a intencao
 * eh enviar arquivos XMLJSON para testar oos wsdl/restservlets
 * <p>
 * 
 * @author claudio cardozo
ricart.monachesi
 *
 */

public class PostWSDLPostJSON {

	// configura a url?wsdl
    private static String url =
        "[http://192.168.0.185:8080/intellector/services/PolicyExecution/executePolicy";]

    /**
* Chamada RESTful via httpClient
* @param args
*/
    **
	 *
	 * Use: java PostJSON
	 * http://localhost:8080/iw-editor/services/policy/execute http://localhost:8080/iw-editor/services/login/perform admin tools01 C:\temp\ent.json
	 * @param args
	 *
	 */
	public static void main(String[] args) throws Exception {

       		// instanciapassagem umde HttpClientargumentos
		if (args.length != 5) {
			System.out.println(
					"Use: java -classpath HttpClient client = new HttpClient();

       // instancia um GET HTTP method
       HttpMethod method = new GetMethod(url);

       // configura name-value pairs da string para o metodo
       // definindo um xml com os dados a serem para um uma politica
       NameValuePair nvp1= new NameValuePair("xmlInputString", 
    		    "<raiz>" +
				"<programa>politica_dummy</programa><usuario>admin</usuario>" +
				"<senha>tools01</senha>"+
				"<tipo>credito</tipo>"+
				"<layout>Layout_politica_dummy_credito</layout>"+
				"<CodCpf>21769796304</CodCpf>"+
				"<DataNascimento>30011966</DataNascimento>"+
				"<ValBem>101.34</ValBem>"+
				"<DataAberturaConta>23102008</DataAberturaConta>"+
				"</raiz>");

       // configura as partes de envio
       method.setQueryString(new NameValuePair[]{nvp1});

       try{
           int statusCode = client.executeMethod(method);

           System.out.println("QueryString>> " + method.getQueryString());
           System.out.println("Status Text>> " + HttpStatus.getStatusText(statusCode));

           // pega a resposta como String
           System.out.println("Response>> " + method.getResponseBodyAsString());

           //release da conexao
           method.releaseConnection();
       }
       catch(IOException e) {
           e.printStackTrace();
       }
   }

}

...

<classpath> [-Dorg.apache.commons.logging.simplelog.defaultlog=<loglevel>] PostXML <url> <urlAuth> <usuario> <senha> <arquivo>]");
			System.out.println("<classpath> - deve conter commons-httpclient.jar e commons-logging.jar");
			System.out.println("<loglevel> - nivel de erro, warn, info, debug, trace");
			System.out.println("<url> - a URL para postar o arquivo");
			System.out.println("<urlAuth> - a URL para postar a autenticação");
			System.out.println("<usuario> - usuario");
			System.out.println("<senha> - senha");
			System.out.println("<arquivo> - arquivo para postar para a URL");
			System.out.println();
			System.exit(1);
		}

		// Pega a URL destino
		String strURL = args[0];

		// Pega a URL autenticação
		String strURLAuth = args[1];

		// Pega o usuário autenticação
		String usuario = args[2];

		// Pega a senha autenticação
		String senha = args[3];

		// Pega o arquivo para ser postado
		String strXMLFilename = args[4];
		File input = new File(strXMLFilename);
		String envio = "";
		try (FileReader reader = new FileReader(strXMLFilename); BufferedReader br = new BufferedReader(reader)) {

			// read line by line
			String line;
			while ((line = br.readLine()) != null) {
				envio = envio.concat(line);
			}

		} catch (IOException e) {
			System.err.format("IOException: %s%n", e);
		}

		HttpResponse httpResponse = null;
		DefaultHttpClient defaultHttpClient = new DefaultHttpClient();
		BufferedReader bufferedReader = null;
		HttpEntity httpEntity = null;
		StringEntity stringEntity = new StringEntity(envio);

		// Autenticar no Intellector
		HttpGet httpGet = new HttpGet(strURLAuth);
		String credential = Base64.encodeBase64String((usuario.concat(":").concat(senha)).getBytes("UTF-8"));
		httpGet.setHeader("Authorization", "Basic " + credential.substring(0, credential.length()));
		httpGet.setHeader("Accept", "application/json");
		httpGet.setHeader("Connection", "close");
		httpEntity = (httpResponse = defaultHttpClient.execute(httpGet)).getEntity();
		httpGet.completed();
		EntityUtils.consume(httpEntity);

		// Enviar os dados para a execução da política
		stringEntity.setContentType("application/json");
		HttpPost httpPost = new HttpPost(strURL);
		httpPost.setHeader("Authorization", "Basic " + credential.substring(0, credential.length()));
		httpPost.setEntity(stringEntity);
		httpEntity = (httpResponse = defaultHttpClient.execute(httpPost)).getEntity();
		if (null != httpEntity) {
			bufferedReader = new BufferedReader(new InputStreamReader(httpEntity.getContent()));
			String output;
			String json;
			for (json = ""; (output = bufferedReader.readLine()) != null; json = (new StringBuilder()).append(json)
					.append(output).toString())
				;
			defaultHttpClient.getConnectionManager().shutdown();
			System.out.println(json);
		} else {
			System.out.println("Execução retornou null");
		}

	}

}

Bloco de código
themeEclipse
titleExemplo de retorno
linenumberstrue
{"data":{"message":"{\"LPT__sAcao\":\"APROVA\",\"LPT__sMsgErro\":\"\",\"LIMITE\":\"200.0\",\"MensagemRetorno\":\"\",\"LPT__iRetorno\":\"0\",\"LPT__CodExecucao\":\"dd66926e-51bd-47ce-9759-ac7e3bdd16c1\"}"}}

====
Usando RESTful XML

Uma vez que os exemplos acima, via browser, esclareceram envelope/contrato, segue abaixo um exemplo de chamada via httpClient. REST é apenas um estilo de arquitetura, baseado em estados de transferência.


Bloco de código
languagejava
themeEclipse
titlePostWSDL

...