Histórico da Página
...
====
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 | ||||||
---|---|---|---|---|---|---|
| ||||||
Bloco de código | ||||||
| ||||||
| ||||||
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 | ||||||
---|---|---|---|---|---|---|
| ||||||
{"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 | ||||||
---|---|---|---|---|---|---|
| ||||||
...
Import HTML Content
Visão Geral
Conteúdo das Ferramentas