Enviar parâmetros Viz guzzle para clliente
Carlos, boa tarde. Eu não estou sabendo como enviar parâmetros no Guzzle.
$aae = new Guzzle;
$params['form_params'] = array('ano_data_programda' => 2019, 'mes_data_programada' => 11);
//dd($params);
$result = $aae->request('POST', env('URL_API_OI_V1', $params), [
'headers' => [ ...
É via POST mesmo ok?
Na verdade preciso passar o header e os parâmetros.
$body = [
'body' =>
[
'ano_data_programacao' => '2019',
'ano_data_programacao' => '11',
]
];
$result = $aae->request('POST', env('URL_API_OI_V1_GETPREV', $body),
[
'headers' => [
'Authorization' => "Bearer {$this->token}",
'Content-Type' => 'Application/json',
],
]);
Olá, Marcos!
Tudo bem?
Se deseja enviar parâmetros no body da requisição a request deve ser via POST, porque se enviar via GET a request os dados serão enviados como "query string".
Essa requisição seria:
$aae->request('POST', 'url-aqui', [
'body' => [
'parametros' => 'aqui',
]
]);
(http://docs.guzzlephp.org/en/stable/request-options.html#body)
Bom dia Carlos. Ainda não deu.
$result = $aae->request('POST', env('URL_API_OI_V1_GETPREV'), [
'form_params' => [
'ano_data_programacao' => '2019',
'ano_data_programacao' => '11'
],
'headers' => [
'Authorization' => "Bearer {$this->token}",
'Content-Type' => 'Application/json',
],
]);
Estou tendo que passar na URL para funcionar
URL_API_OI_V1_GETPREV=https://preventivaspredial.h.portalssp.com/api/getpreventivas?ano_data_programada=2019&mes_data_programada=11
Parece que ignora os params.
Quando você envia os parâmetros assim está enviando como query params (eles estão chegando na API, por isso não está gerando erro): https://preventivaspredial.h.portalssp.com/api/getpreventivas?ano_data_programada=2019&mes_data_programada=11
Sempre que alterar alguma configuração é importante limpar os caches, comandos:
php artisan cache:clear
php artisan route:cache
php artisan config:clear
php artisan view:clear
------------
Enviando os parâmetros no body da requisição não deu certo?
Igual aqui: http://docs.guzzlephp.org/en/stable/request-options.html#body
Carlos, não estou entendo isso. LImpei o cache e deixei o código somente como params coforme abaixo:
$aae = new Guzzle;
$result = $aae->request('POST', env('URL_API_OI_V1_GETPREV'), [
'form_params' => [
'ano_data_programacao' => 2019,
'ano_data_programacao' => 11,
],
'headers' => [
'Authorization' => "Bearer {$this->token}",
'Content-Type' => 'Application/json',
],
]);
$preventivas = json_decode($result->getBody())->dados;
dd($preventivas);
Retorno
{#911 ▼ +"attributes": {#919} +"request": {#921} +"query": {#914} +"server": {#912} +"files": {#910} +"cookies": {#923} +"headers": {#918} }
Será que pode ser por estar rodando em máquina local? Se eu colocar no server pode responder melhor?
Olá Marcos!
Nessa API gere logs nela para validar o que chega nas requisições: https://laravel.com/docs/6.x/logging
E qual é o status code retornado da API?
dd($result->getStatusCode());
OI. Não processa. Dá eero: Veja:
$result = $aae->request('POST', env('URL_API_OI_V1_GETPREV'), [
'body' => [
'form_params' => [
'ano_data_programacao' => 2019,
'ano_data_programacao' => 11,
]
],
'headers' => [
'Authorization' => "Bearer {$this->token}",
'Content-Type' => 'Application/json',
],
]);
Retorno:
"
"Olá, Marcos!
Você tem esse código no GitHub? Porque fica mais fácil para mim analisar onde você está errando.
Faça essa requisição para algum serviço como este, porque assim você consegue validar o que está enviando, os parâmetros e etc: https://requestbin.com/
Oi Calos tudo bem?
Eu ainda não consegui resolver este problema.
Subi o projeto no github como https://github.com/marcosbirrocalixto/helperhml
O problema é que não estou sabendo como passar os parâmetros como body como é exigido pelo cliente.
Se puder olhar lá? O controller é PreventivaController que está dentro de controllers\oi
O .env tem a URL como abaixo: Primeiro autentico, pego o token e depois tento pegar as preventivas
URL_API_OI_V1=https://autentica.h.portalssp.com/api/solicitatoken
PASSWORD_API_OI_V1=ng0A9ZWaLzxILh6o
USER_API_OI_V1=birro
USER_API_OI_V1_TOKEN=eyJ0eXAiOiJ...
URL_API_OI_V1_GETPREV=https://preventivaspredial.h.portalssp.com/api/getpreventivas
URL_API_OI_V1_GETPREV_MES=11
Oi Marcos!
Eu uso o Guzzle praticamente todos os dias, e é assim mesmo que envia parâmetros via body em uma requisição (pelo menos nas versões mais novas do Guzzle):
$response = $aae ->request($method, $url, [
'auth' => [$token, ''],
'form_params' => $params,
]);
$response = $aae->request('POST', env('URL_API_OI_V1_GETPREV')."?page={$page}", [
'form_params' => [
'ano_data_programacao' => 2019,
'ano_data_programacao' => 11,
],
]);
dd($response);
Pode ser um erro nessa API que recebe a requisição, para testar faça uma requisição para uma URL do Requestbin: http://requestbin.net/
Boa tarde.
Descobri que o problema é no header. Em vez de application/json devo usar o aplication/x-www...
Link do projeto Github
https://github.com/marcosbirrocalixto/helper/invitations
Usei o urldecode e peguei as variáveis:
"{"mensagem":"Ok","dados":[{"preventiva_id":155226,"status":"Em an\u00e1lise pelo fornecedor","predio":"ACAA-ACAA","UF":"MG","preventiva_tipo":"L...
TEnho que gravar estes dados em uma tabela!
Como faço para pegar desta forma e gravar?
Obrigado,
Olá Marcos!
Que bom que conseguiu consultar na API com o Guzzle, está evoluindo. Muito bom!
Sobre o pegar os dados e gravar, preciso de mais detalhes do que precisa.
Essa thread está ficando muito extensa, abre um nova thread (ticket) para discutirmos isso.
No aguardo.
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!