Histórico da Página
...
Como entry-point para execução de políticas, o TOTVS Intellector aceita chamadas via Servlets ou Web Service.
Executando via Servlets
Para executar uma política, basta submeter um post para o servlet runpolicy do TOTVS Intellector, passando o XML de entrada como conteúdo do request; veja abaixo um snippet em código Java.
...
language | java |
---|---|
linenumbers | true |
Serviços
Execução de Políticas:
- SOAP
- WSDL - http://<SERVIDOR>:PORTA/iw-editor/services/PolicyExecution?wsdl
- Execução de política (POST) -
- - http://<SERVIDOR>:PORTA/iw-editor/services/PolicyExecution/executePolicy?xmlInputString=
Bloco de código language xml title Exemplo XML <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsp="http://intellector.tools.com.br/services/WSPolicyExecution/"> <soapenv:Header/> <soapenv:Body> <wsp:executePolicy>
- - http://<SERVIDOR>:PORTA/iw-editor/services/PolicyExecution/executePolicy?xmlInputString=
...
...
...
...
<xmlInputString>
...
...
<![CDATA[<?xml version="1.0"
...
...
...
encoding="UTF-8"?><raiz>
...
...
...
<programa>POLITICA</programa>
...
...
...
...
...
...
...
...
...
<layout>Layout_POLITICA</layout>
...
...
<tipo>TIPO_POLITICA</tipo>
...
<usuario>admin</usuario>
...
...
...
...
...
<senha>tools01</senha>
...
...
<VARIAVEL_ENTRADA_01>S</VARIAVEL_ENTRADA_01> </
...
raiz>]]>
...
...
...
...
</xmlInputString>
...
</wsp:executePolicy>
...
</soapenv:Body> </soapenv:Envelope>
- Execução de política batch (POST) -
- http://<SERVIDOR>:PORTA/iw-editor/services/PolicyExecution/executePolicyBatch?xmlInputString=
Bloco de código language xml title Exemplo XML <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsp="http://intellector.tools.com.br/services/WSPolicyExecution/"> <soapenv:Header/> <soapenv:Body> <wsp:executePolicyBatch>
...
Dados de Entrada
O XML de entrada é composto pelas variáveis de entrada descritas em um layout de política e pelas seguintes informações:
- Nome da política a ser executada; (*)
- Layout utilizado na execução da política; (*)
- Nome e senha do usuário;(*)
- Tipo de política;(*)
(*) - tags obrigatórias
...
<xmlInputString> <![CDATA[<?xml version="1.0" encoding="UTF-8"?> <lote> <programa_lote> <programa>POLITICA</programa> <layout>layout_POLITICA</layout> <tipo>TIPO_POLITICA</tipo> <usuario>admin</usuario> <senha>tools01</senha> </programa_lote> <lotes> <raiz> <VARIAVEL_ENTRADA_01>VALOR</VARIAVEL_ENTRADA_01> </raiz> </lotes> </lote>]]> </xmlInputString> </wsp:executePolicyBatch> </soapenv:Body> </soapenv:Envelope>
- REST
- Autenticação no Servidor: http://<SERVIDOR>:PORTA/iw-editor/services/login/perform
- Authorization - "Basic Auth" - enviar "Username" e "Password"
- Execução de política: http://<SERVIDOR>:PORTA/iw-editor/services/policy/execute
- Efetuar primeiro a autenticação no servidor e enviar no Header a "Authorization":"Basic XXX", onde XXX é a tupla "usuario:senha" em Base64 (ver exemplo abaixo)
- Autenticação no Servidor: http://<SERVIDOR>:PORTA/iw-editor/services/login/perform
Consulta Execução de Plugins:
- SOAP
- WSDL - http://<SERVIDOR>:PORTA/iw-editor/services/ConsultarAuditoriaAcesso?wsdl
- Consultar Auditoria de Plugin (POST) -
- http://<SERVIDOR>:PORTA/iw-editor/services/ConsultarAuditoriaAcesso/ConsultaAuditoriaAcesso?XMLConsultaAuditoriaAcessoRequest=
Bloco de código language xml title Exemplo XML <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsp="http://intellector.totvs.com.br/services/WSPlugins/"> <soapenv:Header/> <soapenv:Body> <wsp:ConsultaAuditoriaAcesso> <XMLConsultaAuditoriaAcessoRequest> <![CDATA[
...
Exemplo
- Nome da política: P_TST_01
- Layout (será sempre a string "Layout_" concatenada com o nome da política): Layout_P_TST_01
- Tipo de política: credito
- Usuário: admin
- Senha: tools01
- Variáveis de entrada
- CPF : 00000000191
O XML de entrada será composto pelas variáveis de entrada descritas em um layout de política e pelas demais informações:
...
Um XML de entrada de execução de política montado a para o layout acima:
...
language | html/xml |
---|---|
linenumbers | true |
<?xml version="1.0"
...
encoding="
...
UTF-
...
8"?>
...
<consultaAcesso> <username>admin</username> <password>tools01</password> <codExecucao>698DF368-B946-43C5-9D55-F12E845117ED</codExecucao> </consultaAcesso> ]]> </XMLConsultaAuditoriaAcessoRequest> </wsp:ConsultaAuditoriaAcesso> </soapenv:Body> </soapenv:Envelope>
Executando via Servlets
Para executar uma política, basta submeter um post para o servlet runpolicy do TOTVS Intellector, passando o XML de entrada como conteúdo do request; veja abaixo um snippet em código Java.
Bloco de código | ||||
---|---|---|---|---|
| ||||
// Pega a URL destino String strURL = "[http://localhost:8080/iw-editor/services/PolicyExecution";]<raiz> <!-- nome da politica --> <programa>P_TST_01</programa> <!-- nome do usuário com permissão pra execucao --> <usuario>admin</usuario> <!-- senha do usuario --> <senha>senha_admin</senha> <!-- tipo de politica --> <tipo>credito</tipo> <!-- layout// Pega o arquivo para ser usado --> <layout>Layout_P_TST_01</layout>postado String <!-- dados de entrada para a execução da politica --> <CPF>00000000191</CPF> </raiz> |
Dados de Saída
Bloco de código | ||||
---|---|---|---|---|
| ||||
O XML de saída é composto pelas variáveis de saída descritas no layout de política utilizado na execução e, pelas seguintes variáveis de controle:
<!-- UUID - identificador unico -->
<LPT__CodExecucao>3176837B-00D1-4B50-8419-126650B0E114</LPT__CodExecucao>
<LPT__iRetorno>0</LPT__iRetorno>
<LPT__sAcao>APROVA</LPT__sAcao>
<LPT__sMsgErro></LPT__sMsgErro> |
Vamos explicitar cada uma das variáveis de retorno acima, exceto o código de execução.
- LPT__iRetorno
1 = ConfigException - exceção de erro na configuração do acesso
2 = LayoutException - exceção de erro na configuração do layout
3 = InfraException - exceção de erro de infraestrutura, como unknown host, certificados errados, autorização, timeout, etc.
4 = InstantiationException - exceção ao instanciar o acesso; erro na reflection
5 = IllegalAccessException - exceção ao instanciar o acesso; erro na reflection por acesso ilegal
6 = ClassNotFoundException - classe do acesso para reflection não encontrada
7 = Erro na política - exceto retorno do acesso.
8 = Erros inesperados, ocorridos durante a execução/tratamento do retorno dos acessos.
9 = Exceção - durante preenchimento das variáveis de retorno da política
10 = Exceção durante a execução da politica e não referente a acessos.
- T__sAcao - contém a ação que a política retornou; pode ser:
APROVA
MY_ACTION, YOUR_ACTION,... - uma ação qualquer definida pelo usuário.
- LPT__sMsgErro - contém uma mensagem de erro explicitada numa string
- LPT__CodExecucao - UUID - identificador único gerado a cada execução de política. Esse código pode ser utilizado posteriormente para consultar a execução da política.
- Também são retornadas as variáveis de saída definidas no layout de saída da política. No exemplo foi retornada a variável LIMITE com o valor 200.00.
Um XML de retorno de uma execução:
Bloco de código | ||||
---|---|---|---|---|
| ||||
<?xml version="1.0" encoding="UTF-8"?>
<raiz>
<LPT__sAcao>APROVA</LPT__sAcao>
<LPT__sMsgErro/>
<MensagemRetorno/>
<LPT__iRetorno>0</LPT__iRetorno>
<LPT__CodExecucao>24cf514d-c56b-498b-93a5-f4686cea4484</LPT__CodExecucao>
<LIMITE>200.0</LIMITE>
</raiz> |
Linha de Comando - Executando uma Política no TOTVS Intellector
Abaixo, listamos alguns exemplos usando várias linguagens, para executar uma política no TOTVS Intellector. Lembramos que os exemplos necessitam de ajustes, mas a ideia central está disponibilizada.
Usando Java com API Apache commons-httpclient - XML
strXMLFilename = args[1];
File input = new File(strXMLFilename);
// Prepara o post HTTP
PostMethod post = new PostMethod(strURL);
// O conteudo do Request serah retirado diretamento do stream de entrada
RequestEntity entity = new FileRequestEntity(input, "text/xml; charset=UTF-8");
post.setRequestEntity(entity);
// Pega o HTTP client
HttpClient httpclient = new HttpClient();
// Executa o request
try {
int result = httpclient.executeMethod(post);
// Mostra o status code
System.out.println("Response status code: " + result);
// Mostra o response
System.out.println("Response body: ");
System.out.println(post.getResponseBodyAsString());
} finally {
// Release da conexao atual para o connection pool de conexoes, uma vez que jah foi feito
post.releaseConnection();
} |
Dados de Entrada
O XML de entrada é composto pelas variáveis de entrada descritas em um layout de política e pelas seguintes informações:
- Nome da política a ser executada; (*)
- Layout utilizado na execução da política; (*)
- Nome e senha do usuário;(*)
- Tipo de política;(*)
(*) - tags obrigatórias
- As demais tags são as variáveis de entrada da política definidas no layout de entrada da política.
- alguns dados, como: Nome da Política, Nome do Layout, Nome e Senha do Usuário, Tipo, bem como as Variáveis necessárias ao acesso, são obrigatórias.
Exemplo
- Nome da política: P_TST_01
- Layout (será sempre a string "Layout_" concatenada com o nome da política): Layout_P_TST_01
- Tipo de política: credito
- Usuário: admin
- Senha: tools01
- Variáveis de entrada
- CPF : 00000000191
O XML de entrada será composto pelas variáveis de entrada descritas em um layout de política e pelas demais informações:
Um XML de entrada de execução de política montado a para o layout acima:
Bloco de código | ||||
---|---|---|---|---|
| ||||
<?xml version="1.0" encoding="ISO-8859-1"?>
<raiz>
<!-- nome da politica -->
<programa>P_TST_01</programa>
<!-- nome do usuário com permissão pra execucao -->
<usuario>admin</usuario>
<!-- senha do usuario -->
<senha>senha_admin</senha>
<!-- tipo de politica -->
<tipo>credito</tipo>
<!-- layout para ser usado -->
<layout>Layout_P_TST_01</layout>
<!-- dados de entrada para a execução da politica -->
<CPF>00000000191</CPF>
</raiz> |
Dados de Saída
Bloco de código | ||||
---|---|---|---|---|
| ||||
O XML de saída é composto pelas variáveis de saída descritas no layout de política utilizado na execução e, pelas seguintes variáveis de controle:
<!-- UUID - identificador unico -->
<LPT__CodExecucao>3176837B-00D1-4B50-8419-126650B0E114</LPT__CodExecucao>
<LPT__iRetorno>0</LPT__iRetorno>
<LPT__sAcao>APROVA</LPT__sAcao>
<LPT__sMsgErro></LPT__sMsgErro> |
Vamos explicitar cada uma das variáveis de retorno acima, exceto o código de execução.
- LPT__iRetorno
1 = ConfigException - exceção de erro na configuração do acesso
2 = LayoutException - exceção de erro na configuração do layout
3 = InfraException - exceção de erro de infraestrutura, como unknown host, certificados errados, autorização, timeout, etc.
4 = InstantiationException - exceção ao instanciar o acesso; erro na reflection
5 = IllegalAccessException - exceção ao instanciar o acesso; erro na reflection por acesso ilegal
6 = ClassNotFoundException - classe do acesso para reflection não encontrada
7 = Erro na política - exceto retorno do acesso.
8 = Erros inesperados, ocorridos durante a execução/tratamento do retorno dos acessos.
9 = Exceção - durante preenchimento das variáveis de retorno da política
10 = Exceção durante a execução da politica e não referente a acessos.
- T__sAcao - contém a ação que a política retornou; pode ser:
APROVA
MY_ACTION, YOUR_ACTION,... - uma ação qualquer definida pelo usuário.
- LPT__sMsgErro - contém uma mensagem de erro explicitada numa string
- LPT__CodExecucao - UUID - identificador único gerado a cada execução de política. Esse código pode ser utilizado posteriormente para consultar a execução da política.
- Também são retornadas as variáveis de saída definidas no layout de saída da política. No exemplo foi retornada a variável LIMITE com o valor 200.00.
Um XML de retorno de uma execução:
Bloco de código | ||||
---|---|---|---|---|
| ||||
<?xml version="1.0" encoding="UTF-8"?>
<raiz>
<LPT__sAcao>APROVA</LPT__sAcao>
<LPT__sMsgErro/>
<MensagemRetorno/>
<LPT__iRetorno>0</LPT__iRetorno>
<LPT__CodExecucao>24cf514d-c56b-498b-93a5-f4686cea4484</LPT__CodExecucao>
<LIMITE>200.0</LIMITE>
</raiz> |
Linha de Comando - Executando uma Política no TOTVS Intellector
Abaixo, listamos alguns exemplos usando várias linguagens, para executar uma política no TOTVS Intellector. Lembramos que os exemplos necessitam de ajustes, mas a ideia central está disponibilizada.
Usando Java com API Apache commons-httpclient - XML
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
package br.com.totvs.intellector.util;
import java.io.File;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.FileRequestEntity;
import org.apache.commons.httpclient.methods.RequestEntity;
/**
* Uma classe generica, via linha de comando para enviar arquivos, e, a intencao
* eh enviar arquivos XML para testar os servlets
* <p>
*
* @author ricart.monachesi
*
*/
public class PostXML {
/**
*
* Use: java PostXML [http://localhost:8080/iw-editor/services/PolicyExecution] c:\dummy_pol.xml
*
* @param args comando na linha de argumentos
* Argumento 0 eh uma URL para um web server, servlet (wsdl?)
* Argumento 1 eh arquivo local formato XML (pode ser qq arquivo!)
*
*/
public static void main(String[] args) throws Exception {
// passagem de argumentos
if (args.length != 2) { | ||||||
Bloco de código | ||||||
| ||||||
package br.com.totvs.intellector.util; import java.io.File; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.methods.FileRequestEntity; import org.apache.commons.httpclient.methods.RequestEntity; /** * Uma classe generica, via linha de comando para enviar arquivos, e, a intencao * eh enviar arquivos XML para testar os servlets * <p> * * @author ricart.monachesi * */ public class PostXML { /** * * Use: java PostXML [http://localhost:8080/iw-editor/services/PolicyExecution] c:\dummy_pol.xml * * @param args comando na linha de argumentos * Argumento 0 eh uma URL para um web server, servlet (wsdl?) * Argumento 1 eh arquivo local formato XML (pode ser qq arquivo!) * */ public static void main(String[] args) throws Exception { // passagem de argumentos if (args.length != 2) { System.out.println("Use: java -classpath <classpath> [-Dorg.apache.commons.logging.simplelog.defaultlog=<loglevel>] PostXML <url> <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("<arquivo> - arquivo para postar para a URL"); System.out.println(); System.exit(1); } // Pega a URL destino String strURL = args[0]; // Pega o arquivo para ser postado String strXMLFilename = args[1]; File input = new File(strXMLFilename); // Prepara o post HTTP PostMethod post = new PostMethod(strURL); // O conteudo do Request serah retirado diretamento do stream de entrada RequestEntity entity = new FileRequestEntity(input, "text/xml; charset=UTF-8"); post.setRequestEntity(entity); // Pega o HTTP client HttpClient httpclient = new HttpClient(); // Executa o request try { int result = httpclient.executeMethod(post); // Mostra o status code System.out.println("Response status code: " + result); // Mostra o response System.out.println("Response body: "); System.out.println(post.getResponseBodyAsString()"Use: java -classpath <classpath> [-Dorg.apache.commons.logging.simplelog.defaultlog=<loglevel>] PostXML <url> <arquivo>]"); } finally { System.out.println("<classpath> - deve conter commons-httpclient.jar e commons-logging.jar"); // Release da conexao atual para o connection pool System.out.println("<loglevel> - nivel de conexoeserro, umawarn, vezinfo, que jah foi feitodebug, trace"); postSystem.out.releaseConnection(); } } } |
====
Usando RESTful - Json
Abaixo 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.
println("<url> - a URL para postar o arquivo");
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 o arquivo para ser postado
String strXMLFilename = args[1];
File input = new File(strXMLFilename);
// Prepara o post HTTP
PostMethod post = new PostMethod(strURL);
// O conteudo do Request serah retirado diretamento do stream de entrada
RequestEntity entity = new FileRequestEntity(input, "text/xml; charset=UTF-8");
post.setRequestEntity(entity);
// Pega o HTTP client
HttpClient httpclient = new HttpClient();
// Executa o request
try {
int result = httpclient.executeMethod(post);
// Mostra o status code
System.out.println("Response status code: " + result);
// Mostra o response
System.out.println("Response body: ");
System.out.println(post.getResponseBodyAsString());
} finally {
// Release da conexao atual para o connection pool de conexoes, uma vez que jah foi feito
post.releaseConnection();
}
}
} |
Usando RESTful - Json
Abaixo 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 | ||||||
---|---|---|---|---|---|---|
| ||||||
package br.com.totvs.intellector.util;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import org.apache.commons.codec.binary.Base64;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
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 JSON para testar os servlets
* <p>
*
* @author ricart.monachesi
*
*/
public class PostJSON {
/**
*
* 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 {
// passagem de argumentos
if (args.length != 5) {
System.out.println(
"Use: java -classpath <classpath> [-Dorg.apache.commons.logging.simplelog.defaultlog=<loglevel>] PostXML <url> <urlAuth> <usuario> <senha> <arquivo>]" | ||||||
Bloco de código | ||||||
| ||||||
package br.com.totvs.intellector.util; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import org.apache.commons.codec.binary.Base64; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; 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 JSON para testar os servlets * <p> * * @author ricart.monachesi * */ public class PostJSON { /** * * 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 { // passagem de argumentos if (args.length != 5) { System.out.println( "Use: java -classpath <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 {"<classpath> - deve conter commons-httpclient.jar e commons-logging.jar"); System.out.println("Execução retornou null<loglevel> - nivel de erro, warn, info, debug, trace"); } } } |
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
{"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.
...
language | java |
---|---|
theme | Eclipse |
title | PostWSDL |
Bloco de código | ||||
---|---|---|---|---|
| ||||
package br.com.tools.intellector.util;
import java.io.IOException;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod;
/**
* Uma classe generica, via linha de comando para enviar arquivos,
* e, a intencao eh enviar arquivos XML para testar o wsdl/rest
* <p>
* @author claudio cardozo
*
*/
public class PostWSDL {
// configura a url?wsdl
private static String url =
"[http://192.168.0.185:8080/intellector/services/PolicyExecution/executePolicy";]
/**
* Chamada RESTful via httpClient
* @param args
*/
public static void main(String[] args) {
// instancia um HttpClient
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();
}
}
} |
...
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");
}
}
}
|
Exemplo de retorno de execução de uma política pelo método REST.
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
{"data":{"message":"{\"LPT__sAcao\":\"APROVA\",\"LPT__sMsgErro\":\"\",\"LIMITE\":\"200.0\",\"MensagemRetorno\":\"\",\"LPT__iRetorno\":\"0\",\"LPT__CodExecucao\":\"dd66926e-51bd-47ce-9759-ac7e3bdd16c1\"}"}} |
Nota: Saiba mais sobre REST
Consultando Políticas via Web Service (WSDL)
...