「cURLでHTTP、HTTPS通信する」
phpのcURLでHTTP、HTTPS通信するには。
GET、POSTを行うには。
回答
windowsの場合
(1)php.iniファイルを以下のように編集する、
;extension=curl
↓
extension=curl.dll
(2)PHPインストール先フォルダにある「libssh2.dll」ファイルを
パスの通ったフォルダ(C:\Windows\System32 等)にコピーする。
(3)apacheを再起動する。
ソース
//メソッドGETの場合
<?php
mb_internal_encoding("UTF-8");
$ch = curl_init();
//GETする値
$get_param = '?get1='.curl_escape($ch,'GET値1').'&get2='.curl_escape($ch,'GET値2');
//基本認証が必要な場合
$hds = ["Authorization: Basic ".base64_encode('ユーザー'.':'.'パスワード'),];
curl_setopt($ch, CURLOPT_URL, 'https://通信URL/'.$get_param);//URL
curl_setopt($ch, CURLOPT_HTTPGET, true); //メソッドがGET
curl_setopt($ch, CURLOPT_HTTPHEADER, $hds); //基本認証ヘッダー
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //自己証明書の場合
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //自己証明書の場合
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //curl_exec()の返り値を文字列で返してもらう
curl_setopt($ch, CURLOPT_TIMEOUT, 10); //タイムアウト秒
//エージェントを入れる場合
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X)');
$res = curl_exec($ch);
//メソッドPOSTの場合
mb_internal_encoding("UTF-8");
//POST値
$content = http_build_query(array('post1' => 'ポスト値1', 'post2' => 'ポスト値2'));
$ch = curl_init();
//基本認証が必要な場合、およびコンテント長ヘッダーの設定
$hds = [
"Authorization: Basic ".base64_encode('ユーザー'.':'.'パスワード'),
"Content-length: " . strlen($content),
];
curl_setopt($ch, CURLOPT_URL, 'https://通信URL/');//URL
curl_setopt($ch, CURLOPT_POST, true); //メソッドPOST
curl_setopt($ch, CURLOPT_HTTPHEADER, $hds); //基本認証、コンテント長ヘッダー
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //自己証明書の場合
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //自己証明書の場合
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //curl_exec()の返り値を文字列で返してもらう
curl_setopt($ch, CURLOPT_POSTFIELDS, $content); //POST値設定
curl_setopt($ch, CURLOPT_TIMEOUT, 10); //タイムアウト秒
//エージェントを入れる場合
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X)');
$res = curl_exec($ch);