NFSe - IPM _ Pinhais/PR

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

Moderador: Moderadores

toya
Usuário Nível 3
Usuário Nível 3
Mensagens: 157
Registrado em: 26 Jul 2004 16:51
Localização: Campo Grande/MS - Brasil
Contato:

NFSe - IPM _ Pinhais/PR

Mensagem por toya »

Preciso de uma ajuda na transcrição HTTP (Postman) para o Harbour:
Ambiente Homologação

Código: Selecionar todos

POST /atende.php?pg=rest&service=WNERestServiceNFSe&cidade=migra_pinhais HTTP/1.1
Host: treinamento.atende.net
Authorization: Basic MDkyNDczNDMwMDAxMjA6SXBtQDIwMjE=
Cookie: PHPSESSID=7pf56uromi3p4vnrj64mi264a1; cidade=migra_pinhais
Content-Length: 222
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="XML"; filename="/E:/JOBs/NFSe/xml_teste/S_NS9_000000001-nfSe.xml"
Content-Type: text/xml
(data)
----WebKitFormBoundary7MA4YWxkTrZu0gW

Código: Selecionar todos

cFile := "E:\JOBs\NFSe\xml_teste\S_NS9_000000001-nfSe.xml"

doc := CreateObject( "MSXML2.DOMDocument" )
oHTTP := CreateObject( "MSXML2.XMLHTTP" )    
oHTTP:Open( "POST" ,  cUrl, .f. )
oHTTP:SetRequestHeader( "Content-Type"   , "text/xml" )    
oHTTP:SetRequestHeader( "Authorization"  , "Basic " + cBasic )
oHTTP:SetRequestHeader( "Content-Type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW" )  
oHTTP:SetRequestHeader( "Content-Disposition", 'form-data; name="XML"; filename=' + cFile )
http:Send()
Estou obtendo o seguinte retorno:

Código: Selecionar todos

<?xml version="1.0" encoding="ISO-8859-1"?>
<retorno>
	<mensagem>
		<codigo>9999 - Arquivo XML da Nota Fiscal de Servi?Eletr?a n?enviado!</codigo>
	</mensagem>
</retorno>

Elcio Carlos
(toya)
Ahora en la version 6.5
toyasis@gmail.com (e-mail)
toyaskype (skype)
http://www.toyanet.com.br
https://www.facebook.com/profile.php?id=100009195956044

FWH 11.8+PellesC+xHarbour.org 1.2.1+SqlRDD
Clippeiro por opção, Fivewiner por amor ao Clipper...
2015 - Iniciante/Aprendiz de HMG...
frazato
Usuário Nível 3
Usuário Nível 3
Mensagens: 219
Registrado em: 08 Jul 2004 07:45

NFSe - IPM _ Pinhais/PR

Mensagem por frazato »

Tarde!
Utilizo assim, e funciona para json, talvez ajude em alguma coisa!

Frazato

Código: Selecionar todos


//------------------------------------------------------------------------------------
Static Function CarregaDMOfertas(cArqJson)
Local i
*Local Url := 'http://api.appsoumais.dmcardweb.com.br/api/OfertaAutomatica/CreatOferta'
*Local cToken := "e53064akddkdçaslfklçlçafsakdflçsadfkfdk07"
Local Url := Lerparam('DMOFERTA_URL_CRIAR_CIA')
Local cToken := Lerparam('DMOFERTA_TOKEN')
Local cRetorno :=''

  

    CENTRA(24,"Aguarde...Publicando ofertas no APP da DMOFERTAS!")

*   xmldoc = CREATEOBJECT("MSXML2.SERVERXMLHTTP")

		           
    xmldoc = CREATEOBJECT("MSXML2.ServerXMLHTTP.5.0")
    xmldoc:setTimeouts(1000*60, 1000*60, 0, 0)
    xmldoc:open("POST", url, .f.)
    xmldoc:SetRequestHeader( "Content-Type", "application/json;charset=utf-8"  )
    xmldoc:SetRequestHeader( "token" , cToKen )
    xmldoc:SetRequestHeader( "Connection", "Keep-Alive"  )


   *xmldoc:setTimeouts(1000*60, 1000*60, 0, 0)


   //-- Montando o Xml pra consulta  exemplo do conteudo da matriz a popular o json
  * cListaItens := {}

		    //codigo  EAN 	    3-descricao       4-estq 5-norma 6-oferta 7-dmoferta	   
*   Aadd(cListaItens,{'50136','7896185310576','CREME LEITE SHEFA TP 200G',100   ,2.99   ,2.79,2.49 })
*   Aadd(cListaItens,{'06776','7894900031515','REFRIGERANTE FANTA 2L'    ,100   ,5.49   ,4.99,4.89 })
*   Aadd(cListaItens,{'58435','7891150064317','DETERGENTE PO OMO 800GR'  ,100   ,9.49   ,8.78,8.49 })
*   Aadd(cListaItens,{'39655','8712000025649','BARRIL HEINEKEN 5L'  ,100   ,84.90  ,79.90,78.90 })

   Texto := cArqJson  
   lErroEnvio := .f.
   Try
	xmldoc:send(Texto)
	
   Catch oError
	    CRLF := ''
	    cErrorTmp :="Error: "  + Transform(oError:GenCode, nil) + CRLF +;
	                "SubC: "   + Transform(oError:SubCode, nil) + CRLF +;
	                "OSCode: "  + Transform(oError:OsCode,  nil) + CRLF +;
	                "SubSystem: " + Transform(oError:SubSystem, nil) + CRLF +;
	                "Mensagem: " + oError:Description
	 
	    Alerta("Erro ao chamar metodo SEND de HttpRequest (Registro envio)"+chr(10)+cErrorTmp )
	    lErroEnvio := .t.
   End 

   If lErroEnvio == .t.
      Return cErrorTmp
   Endif

   DO WHILE xmldoc:readyState <> 4
      MILLISEC(1000)
   ENDDO

   Linha :=xmldoc:responseText
   Linha2:=xmldoc:ResponseBody()

   MemoWrit(mTemporal+'revisao2.txt',Linha2)
   MemoWrit(mTemporal+'revisao1.txt',Linha )

  *Alerta(Linha)
  *Alerta(Linha2)

   cRetornoDM :=["code":1}]
   cRetorno   := cRetornoDM
toya
Usuário Nível 3
Usuário Nível 3
Mensagens: 157
Registrado em: 26 Jul 2004 16:51
Localização: Campo Grande/MS - Brasil
Contato:

NFSe - IPM _ Pinhais/PR

Mensagem por toya »

Frazato...
Mui grato...
Mas no caso, ele está autenticando.
Apenas não está anexando/enviando o arquivo...
Elcio Carlos
(toya)
Ahora en la version 6.5
toyasis@gmail.com (e-mail)
toyaskype (skype)
http://www.toyanet.com.br
https://www.facebook.com/profile.php?id=100009195956044

FWH 11.8+PellesC+xHarbour.org 1.2.1+SqlRDD
Clippeiro por opção, Fivewiner por amor ao Clipper...
2015 - Iniciante/Aprendiz de HMG...
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

NFSe - IPM _ Pinhais/PR

Mensagem por Jairo Maia »

Olá Pessoal,
toya escreveu:Apenas não está anexando/enviando o arquivo...
Não entendo nada do que vocês estão discutindo aqui, mas com base nessa declaração vou fazer uma pergunta:

Isso está correto?:

Código: Selecionar todos

filename="/E:/JOBs/NFSe/xml_teste/S_NS9_000000001-nfSe.xml"
É essa barra no início do caminho que questiono.

E aqui:

Código: Selecionar todos

cFile := "E:\JOBs\NFSe\xml_teste\S_NS9_000000001-nfSe.xml"
Aqui está no formato Windows, e a anterior no formato Linux.

Desculpem se a pergunta foi idiota.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
toya
Usuário Nível 3
Usuário Nível 3
Mensagens: 157
Registrado em: 26 Jul 2004 16:51
Localização: Campo Grande/MS - Brasil
Contato:

NFSe - IPM _ Pinhais/PR

Mensagem por toya »

Jairo, já testei nas duas formas...
Elcio Carlos
(toya)
Ahora en la version 6.5
toyasis@gmail.com (e-mail)
toyaskype (skype)
http://www.toyanet.com.br
https://www.facebook.com/profile.php?id=100009195956044

FWH 11.8+PellesC+xHarbour.org 1.2.1+SqlRDD
Clippeiro por opção, Fivewiner por amor ao Clipper...
2015 - Iniciante/Aprendiz de HMG...
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

NFSe - IPM _ Pinhais/PR

Mensagem por Kapiaba »

Também não estou te entendendo, seja mais específico. E para pegar esse diretório imenso, você está usando o:

Código: Selecionar todos

   Lfn2Sfn(cDir)
??

Regards, saludos.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

NFSe - IPM _ Pinhais/PR

Mensagem por rochinha »

Amiguinhos,

Faltou?

Código: Selecionar todos

   oHTTP:Send( memoread( "E:/JOBs/NFSe/xml_teste/S_NS9_000000001-nfSe.xml" ) )
Notei que no código você cria o objeto na variável oHTTP

Código: Selecionar todos

   oHTTP := CreateObject( "MSXML2.XMLHTTP" )   
Mas no seu código está http:

Código: Selecionar todos

   http:Send()
Se não deu erro nesta linha é porque a variável http está publicizada no geral.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
toya
Usuário Nível 3
Usuário Nível 3
Mensagens: 157
Registrado em: 26 Jul 2004 16:51
Localização: Campo Grande/MS - Brasil
Contato:

NFSe - IPM _ Pinhais/PR

Mensagem por toya »

Aos interessados...
Como consegui resolver...
Mui grato aos colegas...

Código: Selecionar todos

	cBase64 := alltrim( hDados["login"] ) + ":" + alltrim( hDados["senha"] )
	cBasic := alltrim( HB_Base64Encode( cBase64, len( cBase64 ) ) )
	cBasic := strtran( cBasic, CRLF, "" )
	cXmlFile := memoread(cFile)
	
	oHTTP := CreateObject( "MSXML2.ServerXMLHTTP.6.0" )
	oHttp:Open("POST", cUrl, .f. )
	oHTTP:SetRequestHeader( "Authorization", "Basic " + cBasic )
	oHTTP:SetRequestHeader( "Host", cHost ) 
	oHTTP:SetRequestHeader( "Content-Type", "multipart/form-data; boundary=" + cBoundary )
	cTexto := '--'
	cTexto += cBoundary
	cTexto += CRLF
	cTexto += 'Content-Disposition: form-data; name="XML"; filename="'+cFile+'"'
	cTexto += CRLF
	cTexto += 'Content-Type: application/xml'
	cTexto += CRLF
	cTexto += CRLF
	cTexto += cXmlFile
	cTexto += CRLF
	cTexto += CRLF
	cTexto += '--'
	cTexto += cBoundary
	cTexto += '--'
	oHttp:Send( cTexto )
	cRet  := oHttp:ResponseText

Elcio Carlos
(toya)
Ahora en la version 6.5
toyasis@gmail.com (e-mail)
toyaskype (skype)
http://www.toyanet.com.br
https://www.facebook.com/profile.php?id=100009195956044

FWH 11.8+PellesC+xHarbour.org 1.2.1+SqlRDD
Clippeiro por opção, Fivewiner por amor ao Clipper...
2015 - Iniciante/Aprendiz de HMG...
Responder