Perguntas WebService retorno de tabela

Mais
7 anos 6 meses atrás - 7 anos 6 meses atrás #32203 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...
Ultima edição: 7 anos 6 meses atrás por Darkbeo. Razão: Ajustes

Por favor Acessar ou Registrar para participar da conversa.

Mais
7 anos 6 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

Por favor Acessar ou Registrar para participar da conversa.

Mais
7 anos 6 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!

Por favor Acessar ou Registrar para participar da conversa.

Mais
7 anos 4 meses atrás - 7 anos 4 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:
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 4 meses atrás por Darkbeo. Razão: Correções

Por favor Acessar ou Registrar para participar da conversa.

Mais
7 anos 4 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!

Por favor Acessar ou Registrar para participar da conversa.

Mais
7 anos 4 meses atrás #32288 por Darkbeo
Respondido por Darkbeo no tópico WebService retorno de tabela
Já tentei desta forma, da erro informando que a variável não é um objeto

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.118 segundos
Joomla templates by a4joomla