Problemas ao consumir Servidor Rest Construir um servidor rest utilizando o Adianti pro conforme video só que no momento que tento testar receber a seguinte mensagem: ( ! ) Warning: file_get_contents(localhost:8080/adianti-template-5.7.0/template/rest.php?class=ClientesService&method=load&ID_CLI=25): failed to open stream: No error in C:EasyPHP-Devserver-17eds-wwwadianti-template-5.7.0templateteste2.php on line 9 ...
RR
Problemas ao consumir Servidor Rest  
Construir um servidor rest utilizando o Adianti pro conforme video só que no momento que tento testar receber a seguinte mensagem:


( ! ) Warning: file_get_contents(localhost:8080/adianti-template-5.7.0/template/rest.php?class=ClientesService&method=load&ID_CLI=25): failed to open stream: No error in C:EasyPHP-Devserver-17eds-wwwadianti-template-5.7.0templateteste2.php on line 9
Call Stack
# Time Memory Function Location
1 0.0010 122456 {main}( ) ...teste2.php:0
2 0.0011 123328 file_get_contents ( 'localhost:8080/adianti-template-5.7.0/template/rest.php?class=ClientesService&method=load&ID_CLI=25' ) ...teste2.php:9
Dump $_SERVER

$_SERVER['REMOTE_ADDR'] =

C:EasyPHP-Devserver-17eds-wwwadianti-template-5.7.0templateteste2.php:9:string '127.0.0.1' (length=9)

$_SERVER['REQUEST_METHOD'] =

C:EasyPHP-Devserver-17eds-wwwadianti-template-5.7.0templateteste2.php:9:string 'GET' (length=3)

$_SERVER['REQUEST_URI'] =

C:EasyPHP-Devserver-17eds-wwwadianti-template-5.7.0templateteste2.php:9:string '/adianti-template-5.7.0/template/teste2.php' (length=43)

Variables in local scope (#1)

$location =

C:EasyPHP-Devserver-17eds-wwwadianti-template-5.7.0templateteste2.php:9:string 'localhost:8080/adianti-template-5.7.0/template/rest.php' (length=55)

$parameters =

C:EasyPHP-Devserver-17eds-wwwadianti-template-5.7.0templateteste2.php:9:
array (size=3)
'class' => string 'ClientesService' (length=15)
'method' => string 'load' (length=4)
'ID_CLI' => string '25' (length=2)

$url =

C:EasyPHP-Devserver-17eds-wwwadianti-template-5.7.0templateteste2.php:9:string 'localhost:8080/adianti-template-5.7.0/template/rest.php?class=ClientesService&method=load&ID_CLI=25' (length=99)

C:EasyPHP-Devserver-17eds-wwwadianti-template-5.7.0templateteste2.php:9:null

Não conseguir descobrir o porque deste problema, peço humildemente a ajuda de alguem.

Desde já agradeço pela atenção!

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (9)


NR

Como se trata de uma ulr, tente adicionar "" antes de localhost, caso contrário a função file_get_contents vai interpretar como sendo o caminho para um arquivo ao invés de uma página php.
Mais detalhes:
https://www.php.net/file_get_contents
NR

*"Como se trata de uma url, tente adicionar "H T T P : / /" antes de localhost"...

Acho que por questão de segurança o trecho anterior foi removido
RR

Ainda continuo com o mesmo error, segue o codigo que estou utilizando
 
  1. <?php
  2. // load object by id
  3. $location = "/adianti-template-5.7.0/template/rest.php";
  4. $parameters = array();
  5. $parameters['class'] = 'ClientesService';
  6. $parameters['method'] = 'load';
  7. $parameters['ID_CLI'] = '25';
  8. $url = $location . '?' . http_build_query($parameters);
  9. var_dump( json_decode( file_get_contents("http://localhost:8080",false,$location) ) );
RR

E quando mudei o codigo para este baixo:
 
  1. <?php
  2. // load object by id
  3. $location = "http://localhost:8080/adianti-template-5.7.0/template/rest.php";
  4. $parameters = array();
  5. $parameters['class'] = 'ClientesService';
  6. $parameters['method'] = 'load';
  7. $parameters['ID_CLI'] = '25';
  8. $url = $location . '?' . http_build_query($parameters);
  9. var_dump( json_decode( file_get_contents($location) ) );
  10. Recebo a seguinte mensagem:
  11. C:\EasyPHP-Devserver-17\eds-www\adianti-template-5.7.0\template\teste2.php:9:
  12. object(stdClass)[1]
  13. public 'status' => string 'error' (length=5)
  14. public 'data' => string 'Permissão negada' (length=17)
  15. Alguma idéia de como resolver?
  16. Desde já agradeço
RR

Só para complementar a informação, fiz um teste com o proprio microERP do adianti o que percebi foi o seguinte:
Quando executo usando o banco padrão do microERP funciona perfeitamente as consultas, mas quando mudo para acessar o banco de dados FireBird ele me gerar a mensagem "Permissão Negada".
Fiz um programa para conectar no banco sem ser atraves do rest e conectou e puxou dados normalmente.

Algem tem idéia do que seja o problema e como resolver?
NR

Dentro do arquivo rest.php tem uma verificação que pode retornar "permissão negada":
 
  1. <?php
  2. if (get_parent_class($class) !== 'Adianti\Service\AdiantiRecordService')
  3. {
  4. return json_encode( array('status' => 'error', 'data' => _t('Permission denied')));
  5. }
  6. ?>

Confirme se é essa validação que está retornando erro.
RR

O problema persiste fiz todas as etapas pelo proprio adianti-studio-pro e o resultado é sempre o mesmo null

Lembrando que o bando de dados que estou utilizando é Firebird.

Este é o link que tento executar localhost:8080/adianti-template-5.7.0/template/teste.php

Este é o retorno do link após executar: C:EasyPHP-Devserver-17eds-wwwadianti-template-5.7.0templateteste.php:10:null
***********************************************************************************
Este é o codigo do teste.php
 
  1. <?php
  2. // load object by id
  3. $location = 'http://localhost:8080/adianti-template-5.7.0/template/rest.php';
  4. $parameters = array();
  5. $parameters['class'] = 'ClientesService';
  6. $parameters['method'] = 'load';
  7. $parameters['id'] = '25';
  8. $url = $location . '?' . http_build_query($parameters);
  9. var_dump( json_decode( file_get_contents($url) ) );
  10. *****************************************************************************************************************
  11. Este é o codigo gerado pelo Adianti do rest
 
  1. <?php
  2. /**
  3. * Clientes REST service
  4. */
  5. class ClientesService extends AdiantiRecordService
  6. {
  7. const DATABASE = 'firebird';
  8. const ACTIVE_RECORD = 'Clientes';
  9. /**
  10. * load($param)
  11. *
  12. * Load an Active Records by its ID
  13. *
  14. * @return The Active Record as associative array
  15. * @param $param['id'] Object ID
  16. */
  17. /**
  18. * delete($param)
  19. *
  20. * Delete an Active Records by its ID
  21. *
  22. * @return The Operation result
  23. * @param $param['id'] Object ID
  24. */
  25. /**
  26. * store($param)
  27. *
  28. * Save an Active Records
  29. *
  30. * @return The Operation result
  31. * @param $param['data'] Associative array with object data
  32. */
  33. /**
  34. * loadAll($param)
  35. *
  36. * List the Active Records by the filter
  37. *
  38. * @return Array of records
  39. * @param $param['offset'] Query offset
  40. * $param['limit'] Query limit
  41. * $param['order'] Query order by
  42. * $param['direction'] Query order direction (asc, desc)
  43. * $param['filters'] Query filters (array with field,operator,field)
  44. */
  45. /**
  46. * deleteAll($param)
  47. *
  48. * Delete the Active Records by the filter
  49. *
  50. * @return Array of records
  51. * @param $param['filters'] Query filters (array with field,operator,field)
  52. */
  53. }
  54. O que pode ser?
MG

Olá
Estou tento o mesmo problema de permissão negada de chamadas vindas de Flutter/DIO.
O endereço de chamada possui h t t p no inicio e mesmo assim, dá permissão negada.
Estou quase desistindo de usar REST no Adianti.
HD

Eu também enfrentei o problema de permissão negada, mas eu estava errando na rota rewrite do NGINX, agora só um detalhe... na recuperação do token, a função array_walk_recursive lança um WARNING:

<pre><br/><b>Warning</b>: array_walk_recursive()expectsparameter1tobearray, stringgivenin<b>/home/helquisson/www/simulapro/rest.php</b>online<b>50</b><br/>{ "status": "success", "data": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoiaW5zdGZha2UiLCJ1c2VyaWQiOjU4LCJ1c2VybmFtZSI6Ikluc3RpdHVpXHUwMGU3XHUwMGUzbyBGYWtlIiwidXNlcm1haWwiOiJpbnN0ZmFrZUBnbWFpbC5jb20iLCJleHBpcmVzIjoxNjA0NTA5MjMwfQ.PuBGNDPb1TSLGS3mkqW82AxDDXaCUCZZwcaNWv6Eds4" }


O $response retorna uma string... e a função espera um array... então eu ajustei com:

 
  1. <?php
  2. if(is_array($response)) {
  3. array_walk_recursive($response, ['AdiantiStringConversion', 'assureUnicode']);
  4. }
  5. ?>
</pre>