Histórico da Página
...
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()); } 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>]"); 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"); } } } |
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\"}"}} |
...
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();
}
}
} |
...
Nota: Saiba mais sobre REST
Consultando Políticas via Web Service (WSDL)
...
Exemplo do XML de retorno:
Bloco de código | ||||
---|---|---|---|---|
| ||||
<list> <map> <entry> <string>retorno</string> <string>0</string> </entry> <entry> <string>msgerro</string> <string></string> </entry> </map> <map> <entry> <string>layout</string> <string>Layout_politica_dummy</string> </entry> <entry> <string>cod_programa</string> <string>politica_dummy</string> </entry> <entry> <string>policyType</string> <string>defaulttype</string> </entry> </map> <map> <entry> <string>layout</string> <string>Layout_politica_dummy1</string> </entry> <entry> <string>cod_programa</string> <string>politica_dummy1</string> </entry> <entry> <string>policyType</string> <string>defaulttype</string> </entry> </map> <map> <entry> <string>layout</string> <string>Layout_politica_dummy2</string> </entry> <entry> <string>cod_programa</string> <string>politica_dummy2</string> </entry> <entry> <string>policyType</string> <string>defaulttype</string> </entry> </map> </list> |
...
Import HTML Content
Visão Geral
Conteúdo das Ferramentas