Página 1 de 1

NFSe - IPM _ Pinhais/PR

Enviado: 29 Nov 2021 14:42
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>


NFSe - IPM _ Pinhais/PR

Enviado: 29 Nov 2021 18:58
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

NFSe - IPM _ Pinhais/PR

Enviado: 30 Nov 2021 08:54
por toya
Frazato...
Mui grato...
Mas no caso, ele está autenticando.
Apenas não está anexando/enviando o arquivo...

NFSe - IPM _ Pinhais/PR

Enviado: 30 Nov 2021 09:10
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.

NFSe - IPM _ Pinhais/PR

Enviado: 30 Nov 2021 10:42
por toya
Jairo, já testei nas duas formas...

NFSe - IPM _ Pinhais/PR

Enviado: 30 Nov 2021 12:31
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.

NFSe - IPM _ Pinhais/PR

Enviado: 05 Dez 2021 17:59
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.

NFSe - IPM _ Pinhais/PR

Enviado: 14 Jan 2022 13:35
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