webservice comunicação síncrona

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

gzip para webservice

Mensagem por JoséQuintas »

Surgiu a necessidade de transferir a mensagem em formato GZIP para o webservice.
Imagino que seja diferente da usada pra zipar um arquivo, porque nesta inclui nome de arquivo, tamanho, etc.
Alguém tem idéia de como fazer isso?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

webservice comunicação síncrona

Mensagem por JoséQuintas »

Alguém sabe algo sobre comunicação síncrona ?
Ou poderiam perguntar nos grupos, talvez fivewin/minigui.
Nos testes aqui não retorna nada, nem erro, nem nada.

Na internet menciona o Open() com false, isso sempre usei.
Também menciona que o :WaitForResponse() só vale pra assíncrono.
Mas não encontrei mais detalhes.

NFE e MDFE tem isso faz termpo, mas é opcional.
No CTE vai ser obrigatório.

À primeira vista seria esperar pela resposta, mas tudo indica que não espera.
Já fiz testes trocando POST por GET, colocando testes de conteúdo, etc, mas nenhum funcionou.
Parece que informações pra uso estilo Harbour/VB6 estão sumindo da internet.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

webservice comunicação síncrona

Mensagem por JoséQuintas »

mdfe.png
mdfe2.png
Pelo que estou vendo no manual, eu já faço comunicação síncrona sem problemas.

Então a coisa complicou.
Pode ser que o zip do harbour não seja compatível, não sei dizer.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

webservice comunicação síncrona

Mensagem por Itamar M. Lins Jr. »

Olá!
Teste aqui:
https://bugdays.com/gzip-base64

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

webservice comunicação síncrona

Mensagem por JoséQuintas »

teste.png
No teste bate.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

webservice comunicação síncrona

Mensagem por Itamar M. Lins Jr. »

Olá!
É gzip!

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

webservice comunicação síncrona

Mensagem por JoséQuintas »

mdfe3.png

Resolvido, passaram no harbour-users.

HB_GZCOMPRESS()

O XML.... tá na gambiarra de oficial/homologação, então pode estar errado mesmo.
Esse MDFE já está em funcionamento, o teste é só do envio em modo síncrono.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Wanderlei
Usuário Nível 3
Usuário Nível 3
Mensagens: 196
Registrado em: 25 Jan 2008 13:19
Localização: Goiânia - GO

gzip para webservice

Mensagem por Wanderlei »

Oi Zé, eu utilizo a zlib.lib para descompactar o arquivo de Distribuição de NFe, mais não sei como compacta.
Baixamos uma função em C++ para fazer isso
https://www.zlib.net/manual.html#Gzip Manual da zlib

Código: Selecionar todos

#pragma BEGINDUMP // Abre sessÆo C dentro do fonte PRG
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "errno.h"
#include "zlib.h"
#include "hbapi.h"
#include "hbapiitm.h"
#include "hbapierr.h"
#define windowBits 15
#define ENABLE_ZLIB_GZIP 32 
#define CHUNK 0x4000  

char caminhogz[150];
char caminhotxt[150];

HB_FUNC( HB_FUNC_ABRIRGZ )
{ 
	if(!caminhogz[1]){ // Verifica se a posição 1 do vetor já está carregada. (Ao chamar pela segunda vez, o vetor já estava carregado)
		strcat(caminhogz, hb_parc(1));
		strcat(caminhogz, "tempX.gz");
		strcat(caminhotxt, hb_parc(1));
		strcat(caminhotxt, "tempX.txt");
	}
	hb_retni(FUNC_ABRIRGZ());
}

int FUNC_ABRIRGZ()
{
	const char * file_name_gz = caminhogz;
	const char * file_name_txt = caminhotxt;
	FILE * fileo;
	FILE * fileo2;
	z_stream strm = {0};
	unsigned char in[CHUNK];
	unsigned char out[CHUNK];
	strm.zalloc = Z_NULL;
	strm.zfree = Z_NULL;
	strm.opaque = Z_NULL;
	strm.next_in = in;
	strm.avail_in = 0;
	if (inflateInit2 (& strm, windowBits | ENABLE_ZLIB_GZIP) < 0)
		return -1;
	fileo = fopen (file_name_gz, "rb");
	if ( fileo <= 0)
		return -2;
	fileo2 = fopen (file_name_txt, "wb");
	if ( fileo2 <= 0)
		return -3;
	while (1) {
		int bytes_read;
		int zlib_status;
		bytes_read = fread (in, sizeof (char), sizeof (in), fileo);
		if (ferror(fileo))
			return -4;
		strm.avail_in = bytes_read;
		strm.next_in = in;
		do {
			unsigned have;
			strm.avail_out = CHUNK;
			strm.next_out = out;
			zlib_status = inflate (& strm, Z_NO_FLUSH);
			switch (zlib_status) {
				case Z_OK:
				case Z_STREAM_END:
				case Z_BUF_ERROR:
					break;
				default:
					inflateEnd (& strm);
					fprintf (stderr, "Gzip error %d in '%s'.\n",
					zlib_status, file_name_gz);
					return -5;
			}
			have = CHUNK - strm.avail_out;
			fwrite (out, sizeof (unsigned char), have, fileo2);
		}
		while (strm.avail_out == 0);
		if (feof (fileo)) {
			inflateEnd (& strm);
			break;
		}
	}
	if(fclose(fileo))
		return -6;
	if (fclose(fileo2))
		return -7;
	return 0;
}
Wanderlei Cardoso
Analista / Programador
XHarbour + GtWvW + FiveWin + HwGui + Firebird
Skype: cwanderlei
cwanderlei@yahoo.com.br
(62)98171-3059 - whatsapp

Imagem
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

gzip para webservice

Mensagem por JoséQuintas »

Valeu, mas isso foi resolvido.
hb_gzCompress()
Mas quem usa xharbour pode precisar.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

webservice comunicação síncrona

Mensagem por Kapiaba »

Código: Selecionar todos

 Pasta de D:\XHBBCC74\tests

23/04/2019  16:49               963 7zip.prg
23/04/2019  16:49             1.210 7zip1.prg
23/04/2019  16:49             2.495 7zip2.prg
23/04/2019  16:49             1.790 7zip3.prg
abs.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

webservice comunicação síncrona

Mensagem por JoséQuintas »

Atenção:
NÃO É compactar arquivo, é compactar texto.
E tem que ser formato gzip, não serve zip.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

webservice comunicação síncrona

Mensagem por alaminojunior »

JoséQuintas escreveu:Valeu, mas isso foi resolvido.
hb_gzCompress()
Mas quem usa xharbour pode precisar.
No meu caso, num sistema ainda em xHarbour criei um executável noutra ferramenta que faz a compactação, pois não encontrei função no xHarbour.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

webservice comunicação síncrona

Mensagem por JoséQuintas »

Só pra atualizar:

O título do tópico foi sobre webservice com comunicação síncrona.
Na prática, a sefazclass faz isso desde o início, trata-se apenas daquele Open() com False.
Sempre usei, e nem sabia que isso tinha a ver.

O envio de GZIP não tem a ver com comunicação síncrona.
Pra alguns webservices da fazenda, isso é opcional há algum tempo.
Para o CTE 4.00 começa a obrigatoriedade: só existe opção GZIP.

Como nos testes não retornava nada, achei que tinha algo a ver com a comunicação sincrona.
alaminojunior escreveu:No meu caso, num sistema ainda em xHarbour criei um executável noutra ferramenta que faz a compactação, pois não encontrei função no xHarbour.
Foi o primeiro teste que fiz: usei hb_compress() da biblioteca de compatibilidade com xharbour, achando que poderia ser compatível.
Mas saiba que a do Harbour funciona, essa "outra ferramenta" que menciona, pode ser o harbour mesmo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder