:))
Olá pessoal....
Tópico encerrado.
Consegui fazer a conexao. Obrigado a todos pela ajuda..
Segue código finalizado, caso alguém necessite.
function ABCFarma( lPreview )
LOCAL strXml := []
local nHandle
local cLinha
if internetok() = .f.
load window seminternet // window modal
seminternet.center
seminternet.activate
return
Endif
if file(cCaminhoExe + '\' + 'abcfarma1.txt') = .f.
if internetok() = .f.
load window seminternet2 // windows standard
seminternet2.center
seminternet2.activate
return
Endif
delete item all from grid_1 of consultatabela
_pagina := "1"
strXml += [cnpj_cpf=]+_cnpj_cpf
strXml += [&senha=]+_senha
strXml += [&cnpj_sh=]+_cnpj_sh
strXml += [&pagina=]+_pagina
oServer:= win_OleCreateObject( "MSXML2.ServerXMLHTTP")
oServer:Open( "POST", cABCFARMA, .f. )
oServer:SetRequestHeader( "Content-Type", "application/x-www-form-urlencoded" )
oServer:SetRequestHeader( "Connection", "keep-alive" )
oServer:Send(strXml)
oServer:WaitForResponse( 10000 )
cRetorno:= oServer:ResponseBody
if lPreview
MemoWrit('abcfarma1.txt', cRetorno )
Else
msginfo('Erro no Retorno do Portal ABCFARMA.')
endif
Endif
*** agora inicio trabalho dentro do json abcfarma.txt
*** primeiro busco o numero de paginas do portal
cArquivo := cCaminhoExe + '\' + 'abcfarma1.txt'
nHandle := fopen(cArquivo, 0)
cLinha := space(F_BLOCK)
*cLinha := F_BLOCK
while ( fread (nHandle, @cLinha, F_BLOCK) > 0 )
*** pego qtde de paginas
nInicio := at('total_paginas',cLinha)
nPaginas := subst(cLinha,nInicio + 13,5)
nNumeroPaginas := ''
contador := 1
do while contador <= len(nPaginas)
if isdigit(subst(nPaginas,contador,1))
nNumeroPaginas := nNumeroPaginas + subst(nPaginas,contador,1)
Endif
contador ++
Enddo
nNumeroPaginas := val(nNumeroPaginas)
consultatabela.label_8.value := str(nNumeroPaginas)
consultatabela.label_7.value := '1'
exit
enddo
fclose(nHandle)
if nNumeroPaginas = 0
msginfo('Erro na Apuração do Número de Páginas do Portal ABCFARMA.','ATENÇÃO')
return
Endif
** agora busco todas as paginas do webservice
contador := 2 // a primeira pagina ja foi importada anteriormente
do while contador <= nNumeroPaginas
if file(cCaminhoExe + '\' + 'abcfarma' + alltrim(str(contador)) + '.txt') = .f.
* cABCFARMA := "https://webserviceabcfarma.org.br/webservice/"
* _cnpj_cpf := 'seu_cnpj'
* _senha := 'sua_senha'
* _cnpj_sh := 'Senha_sh'
* _pagina := alltrim(str(contador))
* strXml += [cnpj_cpf=]+_cnpj_cpf
* strXml += [&senha=]+_senha
* strXml += [&cnpj_sh=]+_cnpj_sh
* strXml += [&pagina=]+_pagina
oServer:= win_OleCreateObject( "MSXML2.ServerXMLHTTP")
oServer:Open( "POST", cABCFARMA, .f. )
oServer:SetRequestHeader( "Content-Type", "application/x-www-form-urlencoded" )
oServer:SetRequestHeader( "Connection", "keep-alive" )
oServer:Send(strXml)
oServer:WaitForResponse( 10000 )
cRetorno:= oServer:ResponseBody
if lPreview
cArquivoAbcfarma := 'abcfarma' + alltrim(str(contador)) + '.txt'
MemoWrit(cArquivoAbcfarma, cRetorno )
Else
msginfo('Erro no Retorno do Portal ABCFARMA.')
endif
consultatabela.progressbar_1.value := contador
do events
endif
consultatabela.label_7.value := str(contador)
contador ++
Enddo
consultatabela.progressbar_1.visible := .f.
consultatabela.label_4.visible := .f.
** puxei todas as tabelas
** agora vou importar para o grid
***
contador := 1
cArquivoAbcfarma := directory(cCaminhoExe + '\' + 'abcfarma*.txt')
do while contador <= nNumeroPaginas
cArquivo := cCaminhoExe + '\' + cArquivoAbcfarma[contador,1]
cLinha := space(F_BLOCK)
nHandle := fopen(cArquivo, 0)
tamanhoarquivo := fread(nHandle, @cLinha, F_BLOCK) // em bites
do while len(cLinha) > 0
*** pego produtos
nInicio := at('ID_PRODUTO',cLinha)
if nInicio = 0
exit
Endif
cLinha := '{' + subst(cLinha,nInicio + 12,F_BLOCK)
nFim := at('ID_PRODUTO',cLinha)
if nFim > 0
cComando := subst(cLinha,1,nFim - 4)
Else
cComando := alltrim(cLinha)
Endif
*** agora pego os componentes de cComando
_id_produto := subst(cComando,3 , at('EAN',cComando) - 6)
_ean := subst(cComando,at('EAN',cComando) + len('EAN') + 3 ,at('REGISTRO_ANVISA',cComando) - at('EAN',cComando) - len('EAN') - 6)
_registro_anvisa := subst(cComando,at('REGISTRO_ANVISA',cComando) + len('REGISTRO_ANVISA') + 3 ,at('GGREM',cComando) - at('REGISTRO_ANVISA',cComando) - len('REGISTRO_ANVISA') - 6)
_ggrem := subst(cComando,at('GGREM',cComando) + len('GGREM') + 3 ,at('NOME',cComando) - at('GGREM',cComando) - len('GGREM') - 6)
_nome := subst(cComando,at('NOME',cComando) + len('NOME') + 3 ,at('DESCRICAO',cComando) - at('NOME',cComando) - len('NOME') - 6)
_descricao := subst(cComando,at('DESCRICAO',cComando) + len('DESCRICAO') + 3 ,at('COMPOSICAO',cComando) - at('DESCRICAO',cComando) - len('DESCRICAO') - 6)
_composicao := subst(cComando,at('COMPOSICAO',cComando) + len('COMPOSICAO') + 3 ,at('QTD_EMBALAGEM',cComando) - at('COMPOSICAO',cComando) - len('COMPOSICAO') - 6)
_qtde_embalagem := subst(cComando,at('QTD_EMBALAGEM',cComando) + len('QTD_EMBALAGEM') + 3 ,at('PF_20',cComando) - at('QTD_EMBALAGEM',cComando) - len('QTD_EMBALAGEM') - 6)
_pf_20 := subst(cComando,at('PF_20',cComando) + len('PF_20') + 3 ,at('PMC_20',cComando) - at('PF_20',cComando) - len('PF_20') - 6)
_pmc_20 := subst(cComando,at('PMC_20',cComando) + len('PMC_20') + 3 ,at('PF_18',cComando) - at('PMC_20',cComando) - len('PMC_20') - 6)
_pf_18 := subst(cComando,at('PF_18',cComando) + len('PF_18') + 3 ,at('PMC_18',cComando) - at('PF_18',cComando) - len('PF_18') - 6)
_pmc_18 := subst(cComando,at('PMC_18',cComando) + len('PMC_18') + 3 ,at('PF_17',cComando) - at('PMC_18',cComando) - len('PMC_18') - 6)
_pf_17 := subst(cComando,at('PF_17',cComando) + len('PF_17') + 3 ,at('PMC_17',cComando) - at('PF_17',cComando) - len('PF_17') - 6)
_pmc_17 := subst(cComando,at('PMC_17',cComando) + len('PMC_17') + 3 ,at('PF_17_5',cComando) - at('PMC_17',cComando) - len('PMC_17') - 6)
_pf_17_5 := subst(cComando,at('PF_17_5',cComando) + len('PF_17_5') + 3 ,at('PMC_17_5',cComando) - at('PF_17_5',cComando) - len('PF_17_5') - 6)
_pmc_17_5 := subst(cComando,at('PMC_17_5',cComando) + len('PMC_17_5') + 3 ,at('PF_12',cComando) - at('PMC_17_5',cComando) - len('PMC_17_5') - 6)
_pf_12 := subst(cComando,at('PF_12',cComando) + len('PF_12') + 3 ,at('PMC_12',cComando) - at('PF_12',cComando) - len('PF_12') - 6)
_pmc_12 := subst(cComando,at('PMC_12',cComando) + len('PMC_12') + 3 ,at('PF_0',cComando) - at('PMC_12',cComando) - len('PMC_12') - 6)
_pf_0 := subst(cComando,at('PF_0',cComando) + len('PF_0') + 3 ,at('PMC_0',cComando) - at('PF_0',cComando) - len('PF_0') - 6)
_pmc_0 := subst(cComando,at('PMC_0',cComando) + len('PMC_0') + 3 ,at('PERCENTUAL_IPI',cComando) - at('PMC_0',cComando) - len('PMC_0') - 6)
_percentual_ipi := subst(cComando,at('PERCENTUAL_IPI',cComando) + len('PERCENTUAL_IPI') + 3 ,at('DATA_VIGENCIA',cComando) - at('PERCENTUAL_IPI',cComando) - len('PERCENTUAL_IPI') - 6)
_data_vigencia := subst(cComando,at('DATA_VIGENCIA',cComando) + len('DATA_VIGENCIA') + 3 ,at('NOVO',cComando) - at('DATA_VIGENCIA',cComando) - len('DATA_VIGENCIA') - 6)
_novo := subst(cComando,at('NOVO',cComando) + len('NOVO') + 3 ,at('VARIACAO_PRECO',cComando) - at('NOVO',cComando) - len('NOVO') - 6)
_variacao_preco := subst(cComando,at('VARIACAO_PRECO',cComando) + len('VARIACAO_PRECO') + 3 ,at('PF_17_ALC',cComando) - at('VARIACAO_PRECO',cComando) - len('VARIACAO_PRECO') - 6)
_pf_17_alc := subst(cComando,at('PF_17_ALC',cComando) + len('PF_17_ALC') + 3 ,at('PMC_17_ALC',cComando) - at('PF_17_ALC',cComando) - len('PF_17_ALC') - 6)
_pmc_17_alc := subst(cComando,at('PMC_17_ALC',cComando) + len('PMC_17_ALC') + 3 ,at('PF_17_5_ALC',cComando) - at('PMC_17_ALC',cComando) - len('PMC_17_ALC') - 6)
_pf_17_5_alc := subst(cComando,at('PF_17_5_ALC',cComando) + len('PF_17_5_ALC') + 3 ,at('PMC_17_5_ALC',cComando) - at('PF_17_5_ALC',cComando) - len('PF_17_5_ALC') - 6)
_pmc_17_5_alc := subst(cComando,at('PMC_17_5_ALC',cComando) + len('PMC_17_5_ALC') + 3 ,at('PF_18_ALC',cComando) - at('PMC_17_5_ALC',cComando) - len('PMC_17_5_ALC') - 6)
_pf_18_alc := subst(cComando,at('PF_18_ALC',cComando) + len('PF_18_ALC') + 3 ,at('PMC_18_ALC',cComando) - at('PF_18_ALC',cComando) - len('PF_18_ALC') - 6)
_pmc_18_alc := subst(cComando,at('PMC_18_ALC',cComando) + len('PMC_18_ALC') + 3 ,at('NCM',cComando) - at('PMC_18_ALC',cComando) - len('PMC_18_ALC') - 6)
_ncm := subst(cComando,at('NCM',cComando) + len('NCM') + 3 ,at('ID_TARJA',cComando) - at('NCM',cComando) - len('NCM') - 6)
_id_tarja := subst(cComando,at('ID_TARJA',cComando) + len('ID_TARJA') + 3 ,at('CLASSE_TERAPEUTICA',cComando) - at('ID_TARJA',cComando) - len('ID_TARJA') - 6)
_classe_terapeutica := subst(cComando,at('CLASSE_TERAPEUTICA',cComando) + len('CLASSE_TERAPEUTICA') + 3 ,at('PORTARIA_344_98',cComando) - at('CLASSE_TERAPEUTICA',cComando) - len('CLASSE_TERAPEUTICA') - 6)
_portaria_344_98 := subst(cComando,at('PORTARIA_344_98',cComando) + len('PORTARIA_344_98') + 3 ,at('PRODUTO_REFERENCIA',cComando) - at('PORTARIA_344_98',cComando) - len('PORTARIA_344_98') - 6)
_produto_referencia := subst(cComando,at('PRODUTO_REFERENCIA',cComando) + len('PRODUTO_REFERENCIA') + 3 ,at('CAS',cComando) - at('PRODUTO_REFERENCIA',cComando) - len('PRODUTO_REFERENCIA') - 6)
_cas := subst(cComando,at('CAS',cComando) + len('CAS') + 3 ,at('DCB',cComando) - at('CAS',cComando) - len('CAS') - 6)
_atc_code := subst(cComando,at('ATC_CODE',cComando) + len('ATC_CODE') + 3 ,at('CAP',cComando) - at('ATC_CODE',cComando) - len('ATC_CODE') - 6)
_cap := subst(cComando,at('CAP',cComando) + len('CAP') + 3 ,at('CONFAZ_87',cComando) - at('CAP',cComando) - len('CAP') - 6)
_confaz_87 := subst(cComando,at('CONFAZ_87',cComando) + len('CONFAZ_87') + 3 ,at('TISS_TUSS',cComando) - at('CONFAZ_87',cComando) - len('CONFAZ_87') - 6)
_tiss_tuss := subst(cComando,at('TISS_TUSS',cComando) + len('TISS_TUSS') + 3 ,at('CEST',cComando) - at('TISS_TUSS',cComando) - len('TISS_TUSS') - 6)
_cest := subst(cComando,at('CEST',cComando) + len('CEST') + 3 ,at('ID_FABRICANTE',cComando) - at('CEST',cComando) - len('CEST') - 6)
_id_fabricante := subst(cComando,at('ID_FABRICANTE',cComando) + len('ID_FABRICANTE') + 3 ,at('NOME_FABRICANTE',cComando) - at('ID_FABRICANTE',cComando) - len('ID_FABRICANTE') - 6)
_nome_fabricante := subst(cComando,at('NOME_FABRICANTE',cComando) + len('NOME_FABRICANTE') + 3 ,at('ID_LCCT',cComando) - at('NOME_FABRICANTE',cComando) - len('NOME_FABRICANTE') - 6)
_descricao_lista := subst(cComando,at('DESCRICAO_LISTA',cComando) + len('DESCRICAO_LISTA') + 3 ,at('ID_REGIME_PRECO',cComando) - at('DESCRICAO_LISTA',cComando) - len('DESCRICAO_LISTA') - 6)
_id_regime_preco := subst(cComando,at('ID_REGIME_PRECO',cComando) + len('ID_REGIME_PRECO') + 3 ,at('DESCRICAO_REGIME_PRECO',cComando) - at('ID_REGIME_PRECO',cComando) - len('ID_REGIME_PRECO') - 6)
_descricao_regime_preco := subst(cComando,at('DESCRICAO_REGIME_PRECO',cComando) + len('DESCRICAO_REGIME_PRECO') + 3 ,at('ID_TIPO_PRODUTO',cComando) - at('DESCRICAO_REGIME_PRECO',cComando) - len('DESCRICAO_REGIME_PRECO') - 6)
_id_tipo_produto := subst(cComando,at('ID_TIPO_PRODUTO',cComando) + len('ID_TIPO_PRODUTO') + 3 ,at('DESCRICAO_TIPO_PRODUTO',cComando) - at('ID_TIPO_PRODUTO',cComando) - len('ID_TIPO_PRODUTO') - 6)
_descricao_tipo_produto := subst(cComando,at('DESCRICAO_TIPO_PRODUTO',cComando) + len('DESCRICAO_TIPO_PRODUTO') + 3 ,at('DESCRICAO_TIPO_PRODUTO',cComando) - at('DESCRICAO_TIPO_PRODUTO',cComando) - len('DESCRICAO_TIPO_PRODUTO') - 6)
**acrescento no grid
add item(consultatabela.grid_1.itemcount + 1 ,{_id_produto,_ncm,_id_fabricante,_nome_fabricante,;
_nome,_descricao,_pf_18,_pmc_18,'0',_qtde_embalagem,_percentual_ipi,_data_vigencia,;
_ean,_registro_anvisa,_descricao_lista,upper(_composicao),_classe_terapeutica } ) to grid_1 of consultatabela
cLinha := alltrim(subst(cLinha,nFim -1,2000000))
Enddo
contador ++
consultatabela.label_7.value := str(contador)
consultatabela.progressbar_1.value := contador
do events
Enddo