我想发送POST请求,实际上curl比stream_get_contents慢100毫秒,所以我想使用后者。
我有一个由curl保存的cookie.txt,如何将其用于下面的stream_get_contents函数。
function poster($url, $data, $optional_headers = null)
{
$params = array('http' => array(
'method' => 'POST',
'content' => $data
));
if ($optional_headers !== null) {
$params['http']['header'] = $optional_headers;
}
$ctx = stream_context_create($params);
$fp = @fopen($url, 'rb', false, $ctx);
if (!$fp) {
throw new Exception("Problem with $url, $php_errormsg");
}
$response = @stream_get_contents($fp);
if ($response === false) {
throw new Exception("Problem reading data from $url, $php_errormsg");
}
return $response;
}
curl存储的我的cookie.txt如下所示
secure.domain.com FALSE / FALSE 0 InterSecure AyDzUp5AEKz0ErJYeJF2221lIA$$
#HttpOnly_secure.domain.com FALSE / TRUE 0 ASP.NET_SessionId eqyrgo545czouimlnqc223f0qyi
我尝试了
$header = array(
'Referer: https://secure.domain.com/IDirectTrading/customer/login.aspx',
'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.20 Safari/537.36',
'Cookie : InterSecure = AyDzUp5AEKz0ErJYeJF2221lIA$$;ASP.NET_SessionId = eqyrgo545czouimlnqc223f0qyi'
);
$CE = poster("https://secure.domain.com/Handler.ashx",$str,$header);
但是cookie似乎不起作用,有什么方法可以将cookie文本文件解析为数组并将其用于标题吗?
答案 0 :(得分:2)
根据RFC 6265:
通过处理每个将cookie列表序列化为cookie字符串 cookie列表中的cookie顺序:
输出cookie的名称,%x3D(“ =”)字符和cookie的值。
如果cookie列表中有未处理的cookie,则输出字符%x3B和%x20(“;”)。
换句话说,等号周围没有空格,每个cookie应该用分号和空格分隔:
$header = [
'Cookie: InterSecure=AyDzUp5AEKz0ErJYeJF2221lIA$$; ASP.NET_SessionId=eqyrgo545czouimlnqc223f0qyi',
];