Я хочу сделать HTTPS-запрос через PHP на сервер и получить ответ.
что-то похожее на этот рубиновый код
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 ($ ч);
для получения дополнительной информации, проверьте http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/
Zend Framework имеет приятный компонент Zend_Http_Client, который идеально подходит для такого рода транзакций.
Под капотом он использует завиток, чтобы делать запросы, но вы обнаружите, что 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 = 'user@example.com: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
Пример 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; } ?>