1

投稿データをサーバーに送信して、応答を読みたいと思っています。提供された URL はhttps://thesite.com/page/test.jspです。 $fp = fsockopen("https://thesite .com/page/test.jsp", 80, $errno, $errstr, 30); しかし、「「HTTPs」を見つけることができません」というエラーが発生しました。curlを使用してデータを送信しようとしましたが、サーバーで確認しましたが、リクエストを受信しませんでした。

4

3 に答える 3

5

私は同様の問題を抱えていました.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);
于 2012-09-09T14:50:44.037 に答える
3

間違ったポートにアクセスしています。HTTPS は通常、ポート 443 で到達可能です。

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

また、 でソケット トランスポート識別子を指定する必要がありますfsockopen。この例では、ssl://です。

于 2011-01-21T11:27:32.040 に答える
2

goreSplatterの答えは正しいですが、ここで扱っている3つの階層化プロトコルがあります。ソケットの上にSSLの上にHTTPがあります(IPスタックの上で実行されます)。あなたのアプローチは、3つのうちの1つ(ソケット)のみに対応します。

goreSplatterのアプローチでは、サーバーとの通信を処理するために独自のHTTPスタックを実装する必要があります。これは簡単な作業ではありません。

ファイルラッパーを使用してデータをPOSTすることはできないと思いますが(ストリームラッパーを使用して可能かもしれません)、cURLを使用してURLにアクセスし、多くの苦痛を軽減することをお勧めします。

あなたがグーグルで見つけることができるたくさんの例があります-ここに1つがあります

于 2011-01-21T11:34:09.810 に答える