Curl - это путь для простых запросов. Он работает на кроссплатформенной платформе, имеет расширение PHP, широко принят и протестирован.
Я создал хороший класс, который может ПОЛУЧИТЬ и ПОСТАВИТЬ массив данных (ВКЛЮЧАЯ ФАЙЛЫ!) По URL, просто вызвав CurlHandler :: Get ($ url, $ data) || CurlHandler :: Post ($ url, $ data). Также есть опция аутентификации HTTP-пользователя:)
<code>/**
* CURLHandler handles simple HTTP GETs and POSTs via Curl
*
* @package Pork
* @author SchizoDuckie
* @copyright SchizoDuckie 2008
* @version 1.0
* @access public
*/
class CURLHandler
{
/**
* CURLHandler::Get()
*
* Executes a standard GET request via Curl.
* Static function, so that you can use: CurlHandler::Get('http://www.google.com');
*
* @param string $url url to get
* @return string HTML output
*/
public static function Get($url)
{
return self::doRequest('GET', $url);
}
/**
* CURLHandler::Post()
*
* Executes a standard POST request via Curl.
* Static function, so you can use CurlHandler::Post('http://www.google.com', array('q'=>'StackOverFlow'));
* If you want to send a File via post (to e.g. PHP's $_FILES), prefix the value of an item with an @ !
* @param string $url url to post data to
* @param Array $vars Array with key=>value pairs to post.
* @return string HTML output
*/
public static function Post($url, $vars, $auth = false)
{
return self::doRequest('POST', $url, $vars, $auth);
}
/**
* CURLHandler::doRequest()
* This is what actually does the request
* <pre>
* - Create Curl handle with curl_init
* - Set options like CURLOPT_URL, CURLOPT_RETURNTRANSFER and CURLOPT_HEADER
* - Set eventual optional options (like CURLOPT_POST and CURLOPT_POSTFIELDS)
* - Call curl_exec on the interface
* - Close the connection
* - Return the result or throw an exception.
*
* @param mixed $ method Метод запроса (Получить / Опубликовать)
* @param mixed URI $ url для получения или публикации
* @param mixed $ vars Массив переменных (обязательно для запросов POST)
* @return string вывод HTML
* /
публичная статическая функция doRequest ($ method, $ url, $ vars = array (), $ auth = false)
{
$ curlInterface = curl_init ();
curl_setopt_array ($ curlInterface, array (
CURLOPT_URL => $ url,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_FOLLOWLOCATION => 1,
CURLOPT_HEADER => 0));
if (strtoupper ($ method) == 'POST')
{
curl_setopt_array ($ curlInterface, array (
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => http_build_query ($ vars))
);
}
if ($ auth! == false)
{
curl_setopt ($ curlInterface, CURLOPT_USERPWD, $ auth ['username']. ":". $ auth ['password']);
}
$ result = curl_exec ($ curlInterface);
curl_close ($ curlInterface);
if ($ result === NULL)
{
генерировать новое исключение ('Ошибка запроса Curl:' .curl_errno ($ curlInterface). "-". curl_error ($ curlInterface));
}
еще
{
возврат ($ результат);
}
}
}
?>
[править] Прочитайте пояснение только сейчас ... Возможно, вы захотите использовать один из инструментов, упомянутых выше, который автоматизирует вещи. Вы также можете использовать клиентское расширение Firefox, например ChickenFoot , для большей гибкости. Я оставлю приведенный выше пример класса для будущих поисков.