投稿データをサーバーに送信して、応答を読みたいと思っています。提供された URL はhttps://thesite.com/page/test.jspです。 $fp = fsockopen("https://thesite .com/page/test.jsp", 80, $errno, $errstr, 30); しかし、「「HTTPs」を見つけることができません」というエラーが発生しました。curlを使用してデータを送信しようとしましたが、サーバーで確認しましたが、リクエストを受信しませんでした。
3 に答える
私は同様の問題を抱えていました.curlはデフォルトで、信頼されていない証明書を持つWebサイトを開かないという問題がありました。したがって、このオプションを無効にする必要があります: curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false); したがって、http リクエストを作成するための curl の完全なスクリプトは次のようになります。
$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);
間違ったポートにアクセスしています。HTTPS は通常、ポート 443 で到達可能です。
$fp = fsockopen('ssl://example.com', 443, $errno, $errstr, 30);
また、 でソケット トランスポート識別子を指定する必要がありますfsockopen
。この例では、ssl://
です。
goreSplatterの答えは正しいですが、ここで扱っている3つの階層化プロトコルがあります。ソケットの上にSSLの上にHTTPがあります(IPスタックの上で実行されます)。あなたのアプローチは、3つのうちの1つ(ソケット)のみに対応します。
goreSplatterのアプローチでは、サーバーとの通信を処理するために独自のHTTPスタックを実装する必要があります。これは簡単な作業ではありません。
ファイルラッパーを使用してデータをPOSTすることはできないと思いますが(ストリームラッパーを使用して可能かもしれません)、cURLを使用してURLにアクセスし、多くの苦痛を軽減することをお勧めします。
あなたがグーグルで見つけることができるたくさんの例があります-ここに1つがあります