toya Posted November 29, 2021 Report Share Posted November 29, 2021 Preciso de uma ajuda na transcrição HTTP (Postman) para o Harbour: ambiente Homologação 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 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 tendo o seguinte retorno: <?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> Quote Link to comment Share on other sites More sharing options...
alex2002 Posted November 29, 2021 Report Share Posted November 29, 2021 Toya, parece que a sua declaração de cFile está errada: "E:\JOBs/NFSe\xml_teste\S_NS9_000000001-nfSe.xml" Não teria que ser: "E:/JOBs/NFSe/xml_teste/S_NS9_000000001-nfSe.xml" ou "E:\JOBs\NFSe\xml_teste\S_NS9_000000001-nfSe.xml" ? Quote Link to comment Share on other sites More sharing options...
toya Posted November 29, 2021 Author Report Share Posted November 29, 2021 Já tentei das duas maneiras... Quote Link to comment Share on other sites More sharing options...
kapiaba Posted November 29, 2021 Report Share Posted November 29, 2021 Veja: http://www.pctoledo.com.br/forum/viewtopic.php?f=4&t=26160 http://www.pmpf.rs.gov.br/servicos/geral/files/nfse/erros_comuns_nfse_web_service.pdf Abs. Quote Link to comment Share on other sites More sharing options...
toya Posted December 2, 2021 Author Report Share Posted December 2, 2021 Consegui até aqui... Autentica, mas não envia o arquivo... #Include "FiveWin.ch" function NFSe() local cFile := "" local cUrl:= "" local cBasic := "" local cHost := "" local cRet := "" local cAux := "" local oHTTP := nil cUrl := "https://treinamento.atende.net/atende.php?pg=rest&service=WNERestServiceNFSe&cidade=migra_pinhais" cBasic := "MDkyNDczNDMwMDAxMjA6SXBtQDIwMjE=" cFile := "H:\NFSe\S_NS9_000000003-nfSe.xml" cHost := "treinamento.atende.net" oHTTP := CreateObject( "Msxml2.ServerXMLHTTP.6.0" ) oHTTP:Open( "POST" , cUrl, .f. ) oHTTP:SetRequestHeader( "Authorization", "Basic " + cBasic ) oHTTP:SetRequestHeader( "Content-Type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW" ) oHTTP:SetRequestHeader( "Content-Disposition", chr(34)+"form-data; name=\"+chr(34)+"XML\"+chr(34)+"; filename="+cFile+chr(34)) oHTTP:SetRequestHeader( "Cookie", "PHPSESSID=ocqn90l0rfmovu1d8jrojju7s5; cidade=migra_pinhais" ) oHTTP:SetRequestHeader( "Content-Type", "text/xml" ) oHTTP:SetRequestHeader( "Host", cHost ) ohttp:Send( ) cRet := oHTTP:responseText cAux += memoread( "nfsetoya.prg" ) cAux += CRLF + CRLF + CRLF cAux += "//" + replicate( "-", 78 ) cAux += CRLF cAux += "Retorno:" cAux += CRLF + CRLF cAux += cRet cAux += CRLF + CRLF + CRLF cAux += "//" + replicate( "-", 78 ) cAux += CRLF + CRLF cAux += "no Postman:" cAux += CRLF + CRLF cAux += "Code e Retorno:" cAux += CRLF + CRLF cAux += memoread( "nfsetoya_postman.txt" ) cAux += CRLF + CRLF MemoWrit( "NFSetoya.txt", cAux ) cFile := cFilePath( GetModuleFileName( GetInstance() ) ) + "NFSetoya.txt" WinExec( "H:\Aplicativos\Notepad++\Notepad++.exe " + cFile ) return nil //------------------------------------------------------------------------------ Retorno: <?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> //------------------------------------------------------------------------------ no Postman: Code e Retorno: var client = new RestClient("https://treinamento.atende.net/atende.php?pg=rest&service=WNERestServiceNFSe&cidade=migra_pinhais"); client.Timeout = -1; var request = new RestRequest(Method.POST); request.AddHeader("Authorization", "Basic MDkyNDczNDMwMDAxMjA6SXBtQDIwMjE="); request.AddHeader("Cookie", "PHPSESSID=ocqn90l0rfmovu1d8jrojju7s5; cidade=migra_pinhais"); request.AddFile("XML", "/H:/NFSe/S_NS9_000000003-nfSe.xml"); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); <?xml version="1.0" encoding="ISO-8859-1"?> <retorno> <mensagem> <codigo>00209 - J� consta uma NFSe para o referido prestador de servi�o com o mesmo IDENTIFICADOR de arquivo </codigo></mensagem> </retorno> Quote Link to comment Share on other sites More sharing options...
vailtom Posted December 3, 2021 Report Share Posted December 3, 2021 Toya, esta mensagem: 00209 - J� consta uma NFSe para o referido prestador de servi�o com o mesmo IDENTIFICADOR de arquivo Me parece que o arquivo subiu uma vez, mas quando você tentou de novo e ele bateu lá reclamou da duplicidade no identificador. Meus dois centavos sobre o assunto. Quote Link to comment Share on other sites More sharing options...
toya Posted December 3, 2021 Author Report Share Posted December 3, 2021 Mestre Vailton ... Este retorno é o do Postman... No meu caso não esta anexando o arquivo... Vide esta postgem onde testo tambem com cURL...http://forums.fivetechsupport.com/viewtopic.php?f=6&t=41157&p=246518&sid=501aecec24c2d4dc1692c6a289118f77#p246518 Mui grato... Quote Link to comment Share on other sites More sharing options...
vailtom Posted December 4, 2021 Report Share Posted December 4, 2021 Toya, Sobre a opção usando cURL, notei um detalhe: existe uma opção específica para informar que um arquivo externo precisa ser enviado junto à requisição cURL. Veja um exemplo lendo dados do disco: cUL := 'teste.xml' ? curl_easy_setopt( curl, HB_CURLOPT_UL_FILE_SETUP, cUL ) ? curl_easy_setopt( curl, HB_CURLOPT_INFILESIZE, hb_FSize( cUL ) ), hb_FSize( cUL ) Existe ainda uma outra forma de enviar um conteúdo: quando você precisa enviar os dados que estão na memória e "simular" o upload de um arquivo: tmp := "Insira o conteudo do arquivo aqui." ? curl_easy_setopt( curl, HB_CURLOPT_UL_BUFF_SETUP, tmp ) ? curl_easy_setopt( curl, HB_CURLOPT_INFILESIZE, Len( tmp ) ), Len( tmp ) Veja se lhe ajuda, vai dando um grito aê. Abraços! Quote Link to comment Share on other sites More sharing options...
rochinha Posted December 5, 2021 Report Share Posted December 5, 2021 Amiguinhos, Faltou? ohttp:Send( memoread( "E:/JOBs/NFSe/xml_teste/S_NS9_000000001-nfSe.xml" ) ) Quote Link to comment Share on other sites More sharing options...
toya Posted January 13, 2022 Author Report Share Posted January 13, 2022 Aos interessados, a solução que encontrei: 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 Quote Link to comment Share on other sites More sharing options...
rochinha Posted January 14, 2022 Report Share Posted January 14, 2022 Amiguinhos, Parabens Toya, isto merece comemoração com cerveja e churrasco. Mas acho que você estava no caminho certo quando abriu o tópico, pois só faltava passar o conteúdo do arquivo no método Send(). Mas como quem programou o webservice quis pregar uma peça em você, foi necessário perder uns fios de bigode para vencê-los. toya 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.