我在Zend Framework 2应用程序中使用REST。为了测试我的其余调用,我使用Curl发送REST请求,如下所示:
$client = new Http\Client();
$client->setAdapter(new Http\Client\Adapter\Curl());
$request = new Http\Request();
$request->setUri($url);
$request->setMethod($method);
$response = $client->dispatch($request);
$jsonString = $response->getContent();
除了Curl请求似乎忽略会话外,Everthing工作正常。我需要在我的休息请求处理中访问登录用户,例如让Acl工作。当我使用AngularJS发送REST请求时,会话实际上有效。以下是我设置会话的方式:
$storage = new SessionArrayStorage();
$manager = new SessionManager($config, $storage);
$session = new Session('surveylab', $manager);
如何将会话信息传递给Curl,以便我可以访问Curl请求中的会话?
答案 0 :(得分:1)
查看cURL选项:
CURLOPT_COOKIEFILE
CURLOPT_COOKIEJAR
查找cURL用法的示例:
curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/cookie.txt");
答案 1 :(得分:0)
将您的登录凭据作为帖子发送到您的登录URL,从结果中提取Cookie并在下次请求时发送。我不知道您的应用程序是否会随着时间的推移更新cookie,但您应该在必要时更新它们。 一些示例代码:
curl_setopt_array($ch, array(
CURLOPT_URL => "http://your/url",
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_HTTPHEADER => array('Cookie: ' . $cookies . '"'),
CURLOPT_HEADER => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => false,
CURLOPT_POST => count($postData),
CURLOPT_POSTFIELDS => $post_string
));