Histórico da Página
...
Bloco de código | ||||
---|---|---|---|---|
| ||||
/** * $Revision: 1.2 $ * $Date: 2008-11-13 20:26:51 $ */ package br.com.tools.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 claudio cardozo * */ public class PostXML { /** * * Use: java PostXML [http://www.intellector.com.br:8080/intellector/runpolicy] 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=ISO-8859-1"); 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
...
Aqui um pequeno exemplo de chamada usando os utilities do PLSQL do Oracle.
Bloco de código | ||||
---|---|---|---|---|
| ||||
create or replace FUNCTION sp_solicitahttp ( szXmlEntrada IN VARCHAR2, lenXmlEntrada IN BINARY_INTEGER, szXmlSaida IN OUT VARCHAR2, lenXmlSaida IN OUT BINARY_INTEGER )
RETURN BINARY_INTEGER
IS
/*------------------------------------------------------------------------------------------------
DATA : 02/12/2008
AUTOR : LUIZ LIMA
PRODUTO : SCE
MODULO : BATCH
SGBD : ORACLE
-------------------------------------------------------------------------------------------------*/
o_return_code INTEGER;
i_urltext VARCHAR2(32767);
i_timeout INTEGER DEFAULT 60;
sslreq UTL_HTTP.req;
rsp UTL_HTTP.resp;
replymessage VARCHAR2(32767);
replyline VARCHAR2(32767);
BEGIN
-- Maquina de Teste
i_urltext := 'http://192.168.0.172:8080/intellector/runpolicy';
i_timeout := 50;
-- Iniciando o Banco
sslreq := UTL_HTTP.BEGIN_REQUEST(i_urltext,'POST','HTTP/1.0');
UTL_HTTP.SET_HEADER(sslreq,'Content-Type','text/xml;charset=ISO-8859-1');
UTL_HTTP.SET_HEADER(sslreq,'Content-Length',lenXmlEntrada);
UTL_HTTP.SET_TRANSFER_TIMEOUT(i_timeout);
/* Write information over secure connection */
/*MyXML := '<?xml version="1.0" encoding="UTF-8"?>' ||
'<raiz>' ||
'<programa>politica_dummy</programa>' ||
'<usuario>admin</usuario>' ||
'<senha>tools</senha>' ||
'<tipo>credito</tipo>' ||
'<layout>Layout_politica_dummy</layout>' ||
'<CodCpf>21769796304</CodCpf>' ||
'<DataNascimento>30011966</DataNascimento>' ||
'</raiz>';
*/
UTL_HTTP.WRITE_TEXT(sslreq, szXmlEntrada);
--UTL_HTTP.WRITE_TEXT( sslreq, MyXML);
/* Initialize Response */
rsp:=UTL_HTTP.GET_RESPONSE(sslreq);
replymessage := '';
/* Retrieve response */
BEGIN
LOOP
UTL_HTTP.READ_LINE(rsp, replyline, TRUE);
replymessage := replymessage || replyline;
END LOOP;
UTL_HTTP.END_RESPONSE(rsp);
EXCEPTION
WHEN UTL_HTTP.END_OF_BODY THEN
UTL_HTTP.END_RESPONSE(rsp);
END;
/* Set output information */
szXmlSaida := replymessage;
lenXmlSaida := length(szXmlSaida);
o_return_code := 1;
RETURN o_return_code;
EXCEPTION
WHEN OTHERS THEN
o_return_code := -1;
szXmlSaida := replymessage || ' erro ' || SQLERRM;
lenXmlSaida := length(szXmlSaida);
return o_return_code;
END; |
Usando Active X (VB/ASP)
Aqui um pequeno trecho de código para uma chamada simples ao TOTVS Intellector usando VB/ASP.
Bloco de código | ||||
---|---|---|---|---|
| ||||
'-----------------------------------------------------------------
'-- Função que executa o Intellector via HTTP
'-----------------------------------------------------------------
Function SolicitaHTTP( byval asXmlEntrada )
Dim Url
Dim objXMLReceive
Dim objXMLSend
Dim objSrvHTTP
'Pego o Host e o path do servelet do intellector para formar a url
Url = "[http://www.intellector.com.br:8080/intellector/runpolicy"]
Set objSrvHTTP = CreateObject("Msxml2.ServerXMLHTTP.3.0")
Set objXMLSend = CreateObject("Msxml2.DOMDocument.3.0")
Set objXMLReceive = CreateObject("Msxml2.DOMDocument.3.0")
objXMLSend.async = false
if not( asXmlEntrada = "" or isnull( asXmlEntrada ) or isempty( asXmlEntrada ) ) then
'Carrego XML de entrada
objXMLSend.loadXML asXmlEntrada
'Seto os Timeouts
'objXMLSend.setTimeouts(resolveTimeout, connectTimeout, sendTimeout, receiveTimeout)
'Valores No timeout , 90 seg , 2 min , 5 min
objSrvHTTP.setTimeouts 0 , 90000 , 120000, 3000000
'Configuro o endereço
objSrvHTTP.open "POST", Url, false
'Envio o xml para o servidor
objSrvHTTP.send objXMLSend
Response.ContentType = "text/html;charset=ISO-8859-1"
'Busco o XML de retorno
objXMLReceive = objSrvHTTP.responseText
SolicitaHTTP = objXMLReceive
end if
End Function |
Usando RESTful
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.
...
Import HTML Content
Visão Geral
Conteúdo das Ferramentas