我想把一些帖子数据发送到服务器并阅读回复。他们提供给我的网址是https://thesite.com/page/test.jsp,i尝试使用$ fp = fsockopen(“https://thesite.com/page/test。 jsp“,80,$ errno,$ errstr,30);但是得到了'无法找到“HTTPs”'错误。使用curl发送数据但是与服务器一起检查,他们没有收到任何请求。还有其他办法吗?
答案 0 :(得分:5)
我遇到了类似问题,问题是curl默认情况下不会打开带有不受信任证书的网站。所以你必须禁用这个选项:curl_setopt($ c,CURLOPT_SSL_VERIFYPEER,false); 因此,curl中用于发出http请求的完整脚本将是:
$c = curl_init();
//webpage to which you try to send post
curl_setopt($c, CURLOPT_URL, 'https://www.website/send_request.php');
curl_setopt($c, CURLOPT_POST, true);
// data to be sent via post
curl_setopt($c, CURLOPT_POSTFIELDS, 'var1=324213&var2=432');
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
// Get the response and close the channel.
curl_exec ($c);
// read the error code if there are any errors
if(curl_errno($c))
{
echo 'Curl error: ' . curl_error($c);
}
curl_close ($c);
答案 1 :(得分:3)
您正在访问错误的端口。通常可以在端口443上访问HTTPS:
$fp = fsockopen('ssl://example.com', 443, $errno, $errstr, 30);
此外,您还需要使用socket transport指定fsockopen
标识符。在此示例中,它是ssl://
。
答案 2 :(得分:2)
虽然goreSplatter的答案是正确的,但是你在这里有3个分层协议 - 在套接字顶部的SSL之上的HTTP(它依次在IP堆栈的顶部运行)。您的方法仅针对3个(套接字)中的一个。
goreSplatter的方法仍然需要您实现自己的HTTP堆栈来处理与服务器的通信 - 这不是一项简单的任务。
我认为不可能使用文件包装器POST数据(可能使用流包装器),但我建议您使用cURL来访问URL并为自己节省很多痛苦。
您可以在Google上找到很多示例 - here's one