如何进行php https请求和读取响应?

如何进行php https请求和读取响应?,php,curl,fsockopen,Php,Curl,Fsockopen,我想向服务器发送一些post数据并读取响应。他们提供给我的url使用$fp=fsock进行尝试openhttps://thesite.com/page/test.jsp,80,$errno,$errstr,30;但出现“找不到HTTPs”错误。尝试使用curl发送数据,但与服务器检查后,未收到任何请求。是否有其他方法执行此操作?您访问了错误的端口。HTTPS通常可在端口443上访问: $fp = fsockopen('ssl://example.com', 443, $errno, $errst

我想向服务器发送一些post数据并读取响应。他们提供给我的url使用$fp=fsock进行尝试openhttps://thesite.com/page/test.jsp,80,$errno,$errstr,30;但出现“找不到HTTPs”错误。尝试使用curl发送数据,但与服务器检查后,未收到任何请求。是否有其他方法执行此操作?

您访问了错误的端口。HTTPS通常可在端口443上访问:

$fp = fsockopen('ssl://example.com', 443, $errno, $errstr, 30);

此外,还需要使用指定标识符。在本例中,它是ssl://

您访问了错误的端口。HTTPS通常可在端口443上访问:

$fp = fsockopen('ssl://example.com', 443, $errno, $errstr, 30);

此外,还需要使用指定标识符。在本例中,它是ssl://

虽然Goresplater的答案是正确的,但这里有3个分层协议,即在套接字之上的SSL之上的HTTP,而套接字又在IP堆栈之上运行。您的方法只针对3个套接字中的一个

Goresplater的方法仍然需要您实现自己的HTTP堆栈来处理与服务器的通信——这不是一项简单的任务

我认为使用文件包装器发布数据是不可能的,使用流包装器可能是不可能的,但我建议您使用cURL访问URL,这样可以省去很多麻烦


你可以在Google上找到很多例子-

虽然Goresplater的答案是正确的,但这里有3个分层协议,即HTTP在套接字之上的SSL之上,而SSL在IP堆栈之上运行。您的方法只针对3个套接字中的一个

Goresplater的方法仍然需要您实现自己的HTTP堆栈来处理与服务器的通信——这不是一项简单的任务

我认为使用文件包装器发布数据是不可能的,使用流包装器可能是不可能的,但我建议您使用cURL访问URL,这样可以省去很多麻烦


你可以在谷歌上找到很多例子-

我有一个类似的问题,问题是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);

我有一个类似的问题,问题是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);

请指出为什么这些都无助于解决您的问题:的可能重复请指出为什么这些都无助于解决您的问题:的可能重复