我正在开发一个需要调用API来获取json响应的项目,但是Guzzle客户端身份验证无效。它总是重定向到登录页面。 “nasa”是数据库。 这是我的代码:
<?php
require_once '../composer/vendor/autoload.php';
use GuzzleHttp\Client;
$client = new Client([
'base_url' => ['http://fedview.bfountain.com/{datasource}/', ['datasource' => 'nasa']]]);
$response = $client->get('service/sbapp/goalByAgency', ['auth' => ['username', 'password']]);
echo $response->getBody();
?>
我试过了:
$response = $client->get('login.do?uname=username&passcode=password');
它可以成功登录。
任何人都可以帮我这个吗? (我正在使用Guzzle 5)THX!
答案 0 :(得分:0)
以下是为什么 - 我将不得不为您排除其余故障的原因。
1)echo $ response-&gt; getBody(); //打印出登录页面&#34;它总是重定向到登录页面&#34;
2)$ response = $ client-&gt; get(&#39; service / sbapp / goalByAgency&#39;,[&#39; auth&#39; =&gt; [&#39;用户名&#39;, &#39;密码&#39;]]); //您的$ response是一个登录页面,因为您询问$ client-&gt;获取登录页面或验证页面
3)您需要为$ client成功进行身份验证 4)然后使用$ client通过POST方法请求数据(你错过了这一步)
请参阅我的其他帖子:How can I use Guzzle to send a POST request in JSON?
重做你的代码。你走在正确的轨道上。