<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Serov.eu &#187; curl</title>
	<atom:link href="https://serov.eu/?feed=rss2&#038;tag=curl" rel="self" type="application/rss+xml" />
	<link>https://serov.eu</link>
	<description>Блог программиста</description>
	<lastBuildDate>Thu, 30 Apr 2026 12:31:53 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.1.15</generator>
	<item>
		<title>Дайджест-аутентификация (Digest access authentication)</title>
		<link>https://serov.eu/?p=653</link>
		<comments>https://serov.eu/?p=653#comments</comments>
		<pubDate>Fri, 30 Apr 2021 08:03:18 +0000</pubDate>
		<dc:creator><![CDATA[Evgen]]></dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[Digest]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">https://serov.eu/?p=653</guid>
		<description><![CDATA[Ранее я описывал алгоритм авторизации Digest, как самому собрать пакет данных Для  PHP все оказалось проще,  в  CURL уже есть готовый механизм, который делает 2 запроса для правильной авторизации Это параметр CURLOPT_HTTPAUTH => CURLAUTH_DIGEST, &#160; &#160; Полностью запрос: $request =[ 'SOAPAction: "http://yandex.ru/"', 'Content-Type: text/xml;charset=UTF-8', ]; $options = array( CURLOPT_URL => $url, CURLOPT_HEADER => true, CURLOPT_VERBOSE => &#8230; <a href="https://serov.eu/?p=653" class="more-link">Читать далее <span class="screen-reader-text">Дайджест-аутентификация (Digest access authentication)</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="https://serov.eu/?p=585">Ранее</a>  я описывал алгоритм авторизации Digest, как самому собрать пакет данных</p>
<p>Для  PHP все оказалось проще,  в  CURL уже есть готовый механизм, который делает 2 запроса для правильной авторизации</p>
<p>Это параметр CURLOPT_HTTPAUTH       => CURLAUTH_DIGEST,</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Полностью запрос:</p>
<pre>

$request =[
    'SOAPAction: "http://yandex.ru/"',
    'Content-Type: text/xml;charset=UTF-8',
];


$options = array(
    CURLOPT_URL            => $url,
    CURLOPT_HEADER         => true,
    CURLOPT_VERBOSE        => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_SSL_VERIFYPEER => false,    // for https
    CURLOPT_USERPWD        => $username . ":" . $password,
    CURLOPT_HTTPAUTH       => CURLAUTH_DIGEST,
    CURLOPT_HTTPHEADER     => $request,
    CURLOPT_POST           => true,

    CURLOPT_POSTFIELDS     =>"xmlRequest=" . $input_xml // если нужно передать xml в теле POST
);

$ch = curl_init();

curl_setopt_array( $ch, $options );

try {
    $raw_response  = curl_exec( $ch );


    // validate CURL status
    if(curl_errno($ch))
        throw new Exception(curl_error($ch), 500);

    // validate HTTP status code (user/password credential issues)
    $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);

    if ($status_code != 200)
        throw new Exception("Response with Status Code [" . $status_code . "].", 500);

} catch(Exception $ex) {
    if ($ch != null) curl_close($ch);
    throw new Exception($ex);
}

if ($ch != null) curl_close($ch);

echo "raw response: " . $raw_response;



</pre>
]]></content:encoded>
			<wfw:commentRss>https://serov.eu/?feed=rss2&#038;p=653</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
