PHPを介してサーバーにHTTPSリクエストを送信し、応答を取得したい。
これに似たものRubyコード
http = Net::HTTP.new("www.example.com", 443)
http.use_ssl = true
path = "uri"
resp, data = http.get(path, nil)
ありがとう
これでうまくいくかもしれません。
$ ch = curl_init(); curl_setopt($ ch、CURLOPT_URL、$ url); // curl_execが結果を出力する代わりに結果を返すように設定します。 curl_setopt($ ch、CURLOPT_RETURNTRANSFER、true); //応答を取得してチャネルを閉じます。 $ response = curl_exec($ ch); curl_close($ ch) ;
詳細については、 http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/ を確認してください
Zend Framework には Zend_Http_Client と呼ばれるNiceコンポーネントがあり、この種のトランザクションに最適です。
内部的には curl を使用してリクエストを作成しますが、Zend_Http_Clientのインターフェースは非常に優れており、カスタムヘッダーを追加したり、レスポンスを処理したりする際の設定が簡単です。
最小限の作業でページのコンテンツを取得するだけの場合は、サーバーの構成によっては、次のことができる場合があります。
$data = file_get_contents('https://www.example.com/');
HttpRequestを使用してデータを投稿し、応答を受信する方法の例:
<?php
//set up variables
$theData = '<?xml version="1.0"?>
<note>
<to>my brother</to>
<from>me</from>
<heading>hello</heading>
<body>this is my body</body>
</note>';
$url = 'http://www.example.com';
$credentials = '[email protected]:password';
$header_array = array('Expect' => '',
'From' => 'User A');
$ssl_array = array('version' => SSL_VERSION_SSLv3);
$options = array(headers => $header_array,
httpauth => $credentials,
httpauthtype => HTTP_AUTH_BASIC,
protocol => HTTP_VERSION_1_1,
ssl => $ssl_array);
//create the httprequest object
$httpRequest_OBJ = new httpRequest($url, HTTP_METH_POST, $options);
//add the content type
$httpRequest_OBJ->setContentType = 'Content-Type: text/xml';
//add the raw post data
$httpRequest_OBJ->setRawPostData ($theData);
//send the http request
$result = $httpRequest_OBJ->send();
//print out the result
echo "<pre>"; print_r($result); echo "</pre>";
?>
GETメソッドとPOSTメソッドの2つの例があります。
GETの例:
<?php
$r = new HttpRequest('http://example.com/feed.rss', HttpRequest::METH_GET);
$r->setOptions(array('lastmodified' => filemtime('local.rss')));
$r->addQueryData(array('category' => 3));
try {
$r->send();
if ($r->getResponseCode() == 200) {
file_put_contents('local.rss', $r->getResponseBody());
}
} catch (HttpException $ex) {
echo $ex;
}
?>
投稿例
<?php
$r = new HttpRequest('http://example.com/form.php', HttpRequest::METH_POST);
$r->setOptions(array('cookies' => array('lang' => 'de')));
$r->addPostFields(array('user' => 'mike', 'pass' => 's3c|r3t'));
$r->addPostFile('image', 'profile.jpg', 'image/jpeg');
try {
echo $r->send()->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>