2010-07-07 71 views
2

我正在开发一个网站,将与REST协议进行通信。 REST服务的所有者想要一个cookie与REST调用一起发送,也许通过头文件发送。发送Cookie与REST呼叫,请帮助!

这是如何在PHP中完成的,我该如何发送一个cookie以及一个REST调用?

感谢您的帮助!

回答

2

如果您使用卷曲,看看curl_setopt optionsCURLOPT_COOKIEJAR(存储从响应饼干)和CURLOPT_COOKIEFILE(装饼干请求之前)。将两者都设置为同一个文件应该足够了。

$yourfile = '/any/file/you/want'; 
$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, $url); 
curl_setopt ($ch, CURLOPT_POST, true); 
curl_setopt ($ch, CURLOPT_COOKIEFILE, $yourfile); 
curl_setopt ($ch, CURLOPT_COOKIEJAR, $yourfile); 
$result = curl_exec ($ch); 
curl_close ($ch); 
+0

那么如何使用带有Cookie的PHP和CURL的POST请求看起来像? – user339067 2010-07-07 08:45:47

+0

@ user339067:添加了一个示例 – Piskvor 2010-07-07 08:50:08

+0

(就像旁边一样,如果它有cookie,它不是* pure * REST,但这比宗教问题更重要) – Piskvor 2010-07-25 12:24:03

0

您可以使用cURL函数修改标题。

<?php 
$submit_url = "https://sitename/process.php"; 

$curl = curl_init(); 

curl_setopt($curl, CURLOPT_COOKIEFILE, $cookiefile); 
curl_setopt($curl, CURLOPT_URL, $submit_url); 
curl_setopt($curl, CURLOPT_POST, true); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $params); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); 

$data = curl_exec($curl); 
curl_close($curl); 
?> 
+0

显然,我通过Facebook Connect授权我自己后,Cookie由API的所有者用http set-cookie命令设置。我怎样才能得到它来填充$ cookiefile。 – user339067 2010-07-07 08:55:28