|
Bem Vindo, Visitante
|
Todos os Fórums
ADVPL
|
Imprimir
Enviar Para um Amigo Precisa estar Logado
|
|
|
Assunto: |
Transferir arquivo PDF via Webservice |
|
Versão: |
12.1.7 |
|
Plataforma: |
Microsoft |
Complemento: |
|
|
DB: |
SQL Server |
Complemento: |
|
|
|
|
|
Mensagem do
JESSEALVES
em 16/11/2017, 11:04 h
Local: SP Registro: 16/08/2012 Postagens: 68 |
Bom dia!
Alguém sabe me dizer se é possível realizar uma transferência de arquivos
(.PDF,.DOC, etc.) via Webservice ?
|
|
|
Mensagem do
DON.JUNIOR
em 19/11/2017, 15:53 h
Local: RJ Registro: 24/01/2016 Postagens: 152 |
Boa pergunta... pesquisei um pouco no Google e localizei um post sobre transferência binária de arquivos com SOAP, só não sei se o Protheus faz.
Sobrando um tempo vou me aprofundar no assunto. Nunca precisei mas é bom saber.
https://www.devmedia.com.br/arquivos-em-web-services-transferencia-binaria-com-soap/12939
Att.
Don Junior |
|
|
Mensagem do
ROBERTOMEN
em 20/11/2017, 07:55 h
Local: PR Registro: 04/07/2017 Postagens: 422 |
eu transfiro imagens (.jpg) via web service rest,,segue modelo:
#Include ‘protheus.ch‘
#Include ‘parmtype.ch‘
#Include "RestFul.CH"
// PROTHEUS PASSANDO DADOS PARA WEB SERVICE REST POR JSON
// ROBERTO MENDES 23/06/2017
User Function ERESTCL2()
Return
WSRESTFUL PEDIDOS DESCRIPTION "Serviço REST para manipulação de Status do Pedido - retorna os pedidos do AA3"
WSDATA CODCLI As String //String que vamos receber via URL
WSMETHOD GET DESCRIPTION "Retorna os pedidos informado na URL" WSSYNTAX "/PEDIDOS || /PEDIDOS/{CODCLI}" //Disponibilizamos um método do tipo GET
END WSRESTFUL
WSMETHOD GET WSRECEIVE CODCLI WSSERVICE PEDIDOS
//--> Recuperamos o pedido informado via URL
//--> Podemos fazer dessa forma ou utilizando o atributo ::aUrlParms, que é um array com os parâmetros recebidos via URL (QueryString)
Local cCodCli := Self:CODCLI
Local cVoltagem := " "
Local aArea := GetArea()
Local oObjPed := Nil
Local cJson := ""
Local oResponse := {}
Local nArq
Local nEof
Local cBuffer
Local cImagem
Local lRet := .T.
// define o tipo de retorno do método
::SetContentType("application/json")
SB1->(dbsetorder(1))
AA3->(DbOrderNickName(‘AA3CLI‘))
AA3->(dbseek(cCodCli))
if AA3->(eof())
SetRestFault(400, "Cliente nao possui controle de STATUS de pedido(s) cadastrado(s)")
lRet := .F.
else
while AA3->AA3_CODCLI+AA3->AA3_LOJA == cCodCLi
if empty(AA3->AA3_X_PEDI) ; AA3->(dbskip()) ; loop ; endif
SB1->(dbseek(xfilial(‘SB1‘)+AA3->AA3_CODPRO))
do case
case AA3->AA3_X_VOLT=‘1‘ ; cVoltagem = ‘380 v‘
case AA3->AA3_X_VOLT=‘3‘ ; cVoltagem = ‘220 v‘
endcase
cImagem := ‘ ‘
if !empty(AA3->AA3_X_BTMP)
nArq:=fOpen(alltrim(AA3->AA3_X_BTMP)+".JPG")
if nArq > -1 // abriu arquivo com sucesso
cBuffer:=Space(nEof:=Fseek(nArq,0,2))
Fseek(nArq,0,0) // posiciona no inicio do arquivo
fRead(nArq,@cBuffer,nEof) // lê o arquivo e armazena em cBuffer
fClose(nArq) // fecha o arquivo
cImagem := Encode64(cBuffer) // Compacta o arquivo para transmissão WEB
endif
endif
oObjPed := Pedidos():New(AA3->AA3_X_PEDI+‘/‘+AA3->AA3_X_PITE,AA3->AA3_X_NROP,cVoltagem,AA3->AA3_CODPRO,SB1->B1_DESC,AA3->AA3_X_PCPR,;
dtos(AA3->AA3_X_DPED),dtos(AA3->AA3_X_DTOP),dtos(AA3->AA3_X_DPRO),dtos(AA3->AA3_X_DELE),dtos(AA3->AA3_X_DPIN),dtos(AA3->AA3_X_DEMB),dtos(AA3->AA3_X_DCAR),;
AA3->AA3_X_HPED,AA3->AA3_X_HROP,AA3->AA3_X_HPRO,AA3->AA3_X_HELE,AA3->AA3_X_HPIN,AA3->AA3_X_HEMB,AA3->AA3_X_HCAR,cImagem)
AADD(oResponse,oObjPed)
AA3->(dbskip())
enddo
lRet := .T.
endif
// --> Transforma o objeto de Pedidos em uma string json
//cJson := FWJsonSerialize(oObjCli)
cJson := FWJsonSerialize(oResponse)
// --> Envia o JSON Gerado para a aplicação Client
::SetResponse(cJson)
RestArea(aArea)
Return(lRet)
//****************************************************************************
#include ‘protheus.ch‘
#include ‘totvs.ch‘
User Function EREST02A()
Return
/*/
Classe de produtos para realizar a serialização do objeto de produto
@since 23/06/2017
/*/
Class Pedidos
Data cNumPed As String
Data cNumOP As String
Data cVoltag As String
Data cCodPro As String
Data cDespro As String
Data cPercPro As String
Data cDtPedi As String
Data cDtOp As String
Data cDtPro As String
Data cDtElet As String
Data cDtPint As String
Data cDtEmb As String
Data cDtCarr As String
Data cHrPedi As String
Data cHrOp As String
Data cHrPro As String
Data cHrElet As String
Data cHrPint As String
Data cHrEmb As String
Data cHrCarr As String
Data cImgPed As String
Method New(cNumPed,cNumOP,cVoltag,cCodPro,cDespro,cPercPro,cDtPedi,cDtOp,cDtPro,cDtElet,cDtPint,cDtEmb,cDtCarr,;
cHrPedi,cHrOp,cHrPro,cHrElet,cHrPint,cHrEmb,cHrCarr,cImgPed) Constructor
EndClass
Method New(cpNumPed,cpNumOP,cpVoltag,cpCodPro,cpDespro,cpPercPro,cpDtPedi,cpDtOp,cpDtPro,cpDtElet,cpDtPint,cpDtEmb,cpDtCarr,;
cpHrPedi,cpHrOp,cpHrPro,cpHrElet,cpHrPint,cpHrEmb,cpHrCarr,cpImgPed) Class Pedidos
::cNumPed :=cpNumPed
::cNumOP :=cpNumOP
::cVoltag :=cpVoltag
::cCodPro :=cpCodPro
::cDespro :=cpDespro
::cPercPro :=cpPercPro
::cDtPedi :=cpDtPedi
::cDtOp :=cpDtOp
::cDtPro :=cpDtPro
::cDtElet :=cpDtElet
::cDtPint :=cpDtPint
::cDtEmb :=cpDtEmb
::cDtCarr :=cpDtCarr
::cHrPedi :=cpHrPedi
::cHrOp :=cpHrOp
::cHrPro :=cpHrPro
::cHrElet :=cpHrElet
::cHrPint :=cpHrPint
::cHrEmb :=cpHrEmb
::cHrCarr :=cpHrCarr
::cImgPed :=cpImgPed
Return(Self)
|
|
|
Mensagem do
JESSEALVES
em 20/11/2017, 09:03 h
Local: SP Registro: 16/08/2012 Postagens: 68 |
Bom dia !
Obrigado Junior e Roberto!
Att, |
|
Para postar no Fórum você precisa efetuar o seu login ou se registrar
|
|