- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- WebServices (Integração)
- WebService retorno de tabela
Perguntas WebService retorno de tabela
- Darkbeo
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 33
- Obrigados Recebidos: 0
7 anos 5 meses atrás - 7 anos 5 meses atrás #32203
por Darkbeo
WebService retorno de tabela foi criado por Darkbeo
Prezados, Bom dia!
Estou tentando criar um WebService onde o mesmo me retorne por exemplo a tabela de clientes ou fornecedores, porém não estou conseguindo, sou novo nesse ramo de WebService e estou tendo algumas dificuldades...
Alguém com um pouco mais de experiencia poderia dar um help? algum exemplo? Antes de mais nada, isso é possível? retornar todo conteúdo de uma tabela ? ou apenas x registros ?
WebServices com retornos simples estou conseguindo fazer...
Estou tentando criar um WebService onde o mesmo me retorne por exemplo a tabela de clientes ou fornecedores, porém não estou conseguindo, sou novo nesse ramo de WebService e estou tendo algumas dificuldades...
Alguém com um pouco mais de experiencia poderia dar um help? algum exemplo? Antes de mais nada, isso é possível? retornar todo conteúdo de uma tabela ? ou apenas x registros ?
WebServices com retornos simples estou conseguindo fazer...
Ultima edição: 7 anos 5 meses atrás por Darkbeo. Razão: Ajustes
Por favor Acessar ou Registrar para participar da conversa.
- tyelsilva
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 12
- Obrigados Recebidos: 0
7 anos 5 meses atrás #32211
por tyelsilva
Respondido por tyelsilva no tópico WebService retorno de tabela
Roberto, boa tarde!
Eu também sou novato no WebService e também gostaria de aprender.
Você disse que retorno simples você está conseguindo fazer, poderia me passar alguma dica ou exemplo do que você já conseguiu montar?
Desde já agradeço.
Att,
Marciel
Eu também sou novato no WebService e também gostaria de aprender.
Você disse que retorno simples você está conseguindo fazer, poderia me passar alguma dica ou exemplo do que você já conseguiu montar?
Desde já agradeço.
Att,
Marciel
Por favor Acessar ou Registrar para participar da conversa.
- kanaamlrr
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 1576
- Obrigados Recebidos: 4
7 anos 5 meses atrás #32212
por kanaamlrr
Respondido por kanaamlrr no tópico WebService retorno de tabela
Boa tarde Roberto,
Não é recomendável retornar uma tabela inteira via WS por conta do tamanho do XML gerado, o mesmo poderá exceder o limite e acabar gerando um erro.
Mas caso necessite, o ideal seria você criar um WSStruct com a estrutura dos registros que você quer retornar e usar um array desse wsstruct para retornar.
Acredito que seria algo nesse sentido que você precisa.
Se possível poste o código do seu WS para análise.
Abraço!
Não é recomendável retornar uma tabela inteira via WS por conta do tamanho do XML gerado, o mesmo poderá exceder o limite e acabar gerando um erro.
Mas caso necessite, o ideal seria você criar um WSStruct com a estrutura dos registros que você quer retornar e usar um array desse wsstruct para retornar.
Acredito que seria algo nesse sentido que você precisa.
Se possível poste o código do seu WS para análise.
Abraço!
Por favor Acessar ou Registrar para participar da conversa.
- Darkbeo
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 33
- Obrigados Recebidos: 0
7 anos 3 meses atrás - 7 anos 3 meses atrás #32286
por Darkbeo
Respondido por Darkbeo no tópico WebService retorno de tabela
Kanaãm, Boa Tarde!
Obrigado pelo retorno, consegui fazer o WS retornar uma quantidade X da tabela, justamente devido ao tamanho do XML, pois quando o mesmo fica muito extenso é exibido um erro, então para evitar maiores problemas, modifiquei o site para ser apresentado apenas 10 ou 20 registros por paginas e toda vez que a pagina é modificada o mesmo realiza uma nova consulta na tabela.
Meu problema agora fazer com o que o WS capture o Pedido de Venda que o Site (PHP) está enviando, de certa forma já consegui, porém o WS não consegue ver os item do pedido
Segue uma fração do código:
Todos os campos do oPedido:ITENS[xY]:..... são exibidos como NIL no erro do ExecAuto
Array enviado pelo PHP
Obrigado pelo retorno, consegui fazer o WS retornar uma quantidade X da tabela, justamente devido ao tamanho do XML, pois quando o mesmo fica muito extenso é exibido um erro, então para evitar maiores problemas, modifiquei o site para ser apresentado apenas 10 ou 20 registros por paginas e toda vez que a pagina é modificada o mesmo realiza uma nova consulta na tabela.
Meu problema agora fazer com o que o WS capture o Pedido de Venda que o Site (PHP) está enviando, de certa forma já consegui, porém o WS não consegue ver os item do pedido
Segue uma fração do código:
WSSTRUCT ItenPedido
WSDATA C6_NUM as STRING
WSDATA C6_PRODUTO as STRING
WSDATA ... as STRING
ENDWSSTRUCT
WSSTRUCT cabPedido
WSDATA C5_NUM as STRING
WSDATA ... as STRING
WSDATA ITENS as ARRAY of ItenPedido
ENDWSSTRUCT
WSSTRUCT msgRetorno
WSDATA MR_COD as INTEGER
WSDATA MR_RET as STRING
ENDWSSTRUCT
WSSERVICE wsPedido DESCRIPTION "inclusão"
// Propriedades do WebService
WSDATA aPedido as cabPedido
WSDATA Retorno as msgRetorno
// Metodos do WebService
WSMETHOD ProcessaPW Description "<b>Processamento de Inclusão</b>"
ENDWSSERVICE
WSMETHOD ProcessaPW WSRECEIVE aPedido WSSEND Retorno WSSERVICE wsPedido
Retorno := PEDIDO( aPedido, Retorno )
Return .T.
Static Function PEDIDO(oPedido, oRet)
Local aCabec := {}
Local aItens := {}
Local aLinha := {}
Private lMsErroAuto := .F.
Private lMsHelpAuto := .T.
oRet:MR_COD := 0
oRet:MR_RET := "Falha na Inclusão do Pedido"
_cNumPed := GetSx8Num("SC5","C5_NUM")
aAdd(aCabec, { "C5_NUM", _cNumPed , Nil } )
aAdd(aCabec, { "....." , oPedido:..... , Nil } )
For xY := 1 to Len(oPedido:ITENS)
aLinha := {}
aAdd(aLinha, { "C6_NUM" , _cNumPed , Nil } )
aAdd(aLinha, { "C6_PRODUTO" , oPedido:ITENS[xY]:C6_PRODUTO, Nil } )
aAdd(aLinha, { ".........." , oPedido:ITENS[xY]:........ , Nil } )
aAdd( aItens, aLinha )
Next xY
MSExecAuto( { |x, y, z| MATA410(x, y, z)}, aCabec, aItens, 3)
If !lMsErroAuto
ConfirmSX8()
ConOut("Sucesso")
oRet:MR_COD := 10
oRet:MR_RET := "Pedido Nº "+_cNumPed+" enviado com sucesso!"
Else
RollBackSX8()
ConOut( Mostraerro() )
oRet:MR_COD := 20
oRet:MR_RET := "Ocorreu um erro ao enviar o Pedido"
EndIf
Return oRet
Todos os campos do oPedido:ITENS[xY]:..... são exibidos como NIL no erro do ExecAuto
Array enviado pelo PHP
Array ( [APEDIDO] =>
Array ( [C5_NUM] => 123456789
[......] => .....
[ITENS] => Array ( [ITENPEDIDO] => Array ( [1] => Array ( [C6_NUM] => 123456789
[C6_PRODUTO] => ABC123
[......] => .....
)
[2] => Array ( [C6_NUM] => 123456789
[C6_PRODUTO] => ABC456
[......] => .....
)
[3] => Array ( [C6_NUM] => 123456789
[C6_PRODUTO] => ABC789
[......] => .....
)
)
)
)
)
Ultima edição: 7 anos 3 meses atrás por Darkbeo. Razão: Correções
Por favor Acessar ou Registrar para participar da conversa.
- kanaamlrr
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 1576
- Obrigados Recebidos: 4
7 anos 3 meses atrás #32287
por kanaamlrr
Respondido por kanaamlrr no tópico WebService retorno de tabela
Tente oPedido:ITENS[xY]:ITENPEDIDO:C6_PRODUTO
Pare o seu WS via debug e inspecione o objeto oPedido, assim fica mais fácil de acertar a estrutura.
Abraço!
Pare o seu WS via debug e inspecione o objeto oPedido, assim fica mais fácil de acertar a estrutura.
Abraço!
Por favor Acessar ou Registrar para participar da conversa.
- Darkbeo
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 33
- Obrigados Recebidos: 0
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- WebServices (Integração)
- WebService retorno de tabela
Tempo para a criação da página:0.132 segundos