【发布时间】:2016-11-30 22:01:46
【问题描述】:
试图让我的 Symfony2 控制器向支持的 API 发出请求。需要存储在第一个 API 请求时收到的 cookie,以便在第二个请求中使用它。
这是我的控制器代码:
use Guzzle\Http\Client;
use Guzzle\Plugin\Cookie\CookiePlugin;
use Guzzle\Plugin\Cookie\CookieJar\ArrayCookieJar;
class DefaultController extends Controller
{
public function verifyurlActionOK(Request $request)
{
$cookiePlugin = new CookiePlugin(new ArrayCookieJar());
$client = new Client();
$this->get('session')->set('client', $client);
$client->addSubscriber($cookiePlugin);
$request = $client->get('https://address/scanit?url='.$scantarget);
$response = $request->send();
}
public function progressAction(Request $request)
{
$cli = $session->get('client');
$crequest = $cli->get('https://address/progress');
$response = $crequest->send();
return $this->render('AppBundle:Default:progress.html.twig',
array(
'response' => $cresponse->getBody()));
}
}
尝试将 Client 设置为 DefaultController 类中的公共变量,以及上面的 Session(序列化)。两者似乎都不起作用,这里错误出现在progressAction中的get()上
[2016-11-29 16:22:46] request.CRITICAL: Uncaught PHP Exception Symfony\Component\Debug\Exception\FatalErrorException: "Error: Call to a member function get() on a non-object"
如何在progressAction中从verifyurlActionOK访问$client??
谢谢,
【问题讨论】:
-
$session变量未在progressAction方法中初始化