我必须使用一个网络服务,其中第一步是在 URL http://domain/login 上使用用户名和密码登录;当我登录时,它以 JSON 格式返回以下内容:
{
"payload": {"id_sesion": 903003563},
"exp": 1528992412,
"aud": "poliza",
"token": "eyJhbGciOiJSUzUxMiJ9.e"
}
此连接正常工作,但是,当我连接到 http://domain/list 时,传递 id_session 变量和承载身份验证令牌,它返回 {"error":"auth required"}"。
我用另一种语言尝试过,它可以正常工作;然而,在 PHP 中它没有。
代码如下:
<?php
$curl = curl_init('https://dominio-com/login');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt( $curl, CURLOPT_FOLLOWLOCATION, true );
curl_setopt($curl, CURLOPT_POST, true);
$name = 'user123';
$pass = 'asfsdfsa';
$my_user = array(
"p_usuario"=> $name,
"p_enc_pwd"=> $pass
);
$payload = json_encode($my_user);
curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
$result = curl_exec($curl);
curl_close($curl);
$mJSON=json_decode($result);
$p_o_sesion = $mJSON->payload->p_o_sesion;
$token = $mJSON->token;
$p_cod_prod = 99527;
$p_fec_desde = "2019-01-01";
$p_fec_hasta = "2023-01-31";
$listarpoliza = array(
"p_o_sesion"=> $p_o_sesion,
"p_cod_prod"=> $p_cod_prod,
"p_fec_desde"=> $p_fec_desde,
"p_fec_hasta"=> $p_fec_hasta
);
$payload = json_encode($listarpoliza);
$curl = curl_init('https://dominio.com/LISTAR');/** Ingresamos la url de la api o servicio a consumir */
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt( $curl, CURLOPT_FOLLOWLOCATION, true );
curl_setopt($curl, CURLOPT_POST, true);/** Autorizamos enviar datos*/
curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);
$result = curl_exec($curl);/** Ejecutamos petición*/
curl_close($curl);
var_dump($result);
?>