Укажите учетные данные в XMLReader

Я пытаюсь получить доступ к каналу XML (с именем пользователя и паролем) с помощью XMLReader.
Раньше я интегрировал учетные данные в URL (например, http://username:password@mysite.com); однако, это не работает сейчас.

я получил 'XPath query failed for bio' при окончательной проверке в моем коде.

Можно ли было указать имя пользователя / пароль в XMLReader?

Спасибо за любые предложения.

Мой код (отредактированный, чтобы включить мой код Curl):

<?php
$secondary_user_id = "jsmith";
$url_bio = "http://username:password@mysite.com";

//
$a_username='username';
$a_password='password';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url_bio);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERPWD, $a_username . ':' . $a_password);
$result = curl_exec($ch);
$a_error = curl_error($ch);
echo '<br>'.$a_error.'<br>';
curl_close($ch);
//$reader = new XMLReader();
//$reader->open($url_bio);
$reader->XML($result);
while ($reader->read())
{

if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == 'Users')
{
//the code works to this point
echo 'success<br>';
$node = $reader->expand();
$doc = new DOMDocument('1.0','UTF-8');//
$n = $doc->importNode($node,true);
$doc->appendChild($n);
//$xml_bio_report = simplexml_import_dom($doc->importNode($reader->expand(),true));//
$xml_bio_report =  simplexml_import_dom($n);//

$xml_bio_report->registerXPathNamespace('xlink','http://www.w3.org/1999/xlink');
$xml_bio_report->registerXPathNamespace('dmu','http://www.digitalmeasures.com/schema/user-metadata');

//echo $xml_bio_report->Users->User;$xml_bio_report_abbrev = $xml_bio_report->xpath('//User[@SecondaryID="'.$secondary_user_id.'"]');

if ($xml_bio_report_abbrev){
echo '<h1>'.$xml_bio_report_abbrev[0]['username'].'</h1>';
echo '<h1>'.$xml_bio_report_abbrev[0]['SecondaryID'].'</h1>';

} else {
echo 'XPath query failed for bio';
}

}
}
?>

0

Решение

XMLReader :: open () использует PHP streamwrapper. Вот функция называется libxml_set_streams_context() это позволяет установить контекст для следующего вызова open / load.

$opts = array(
'http' => array(
'user_agent' => 'PHP libxml agent',
)
);

$context = stream_context_create($opts);
libxml_set_streams_context($context);

$reader = new XMLReader();
$reader->open($url_bio);
//...
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector