Ошибка аутентификации curl только на изображениях

Я пытаюсь получить информацию из API XML Rest.

Я могу получить все, но не изображения.

Я могу отобразить всю информацию, но когда это происходит на изображениях, я получаю ошибку 401

Failed to load resource: the server responded with a status of 401 (),

Мой логин и пароль верны. Единственный способ отобразить изображения — войти в этот API в другом окне. Затем все изображения отображаются.

Я делаю что-то неправильно ? Вот мой PHP-код:

function CallAPI($url){
$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "usr:psw");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
return $result;
}

$a = "query SQL";
$asd = $database->query($a);
while($row = sqlsrv_fetch_array($asd)){
echo $url = $row['url']; // I can get this data display
$row['hotel_name'];
$a = CallAPI($url);
$axml = new SimpleXMLElement($a);
$img_link = $axml->item->images;
foreach ($img_link->image as $value) {
echo "<img src='".$value->sizes->size[1]->attributes('http://www.w3.org/1999/xlink')."' class='img-responsive' />";
}

0

Решение

Поэтому ваша проблема должна заключаться в том, что эта ссылка также требует аутентификации. Так что попробуйте позвонить $value->sizes->size[1]->attributes('http://www.w3.org/1999/xlink') передать пользователя и передать.

Итак, ваш код должен выглядеть так

while($row = sqlsrv_fetch_array($asd)){
$url = $row['url'];
$row['hotel_name']; // No use of this one, maybe you use it on your end
$a = CallAPI($url);
$axml = new SimpleXMLElement($a);
$img_link = $axml->item->images;
foreach ($img_link->image as $value) {
/*I am adding the link to a variable*/
$imgLinkFromValue = $value->sizes->size[1]->attributes('http://www.w3.org/1999/xlink');
$img = CallAPI($imgLinkFromValue );
/* Now if you still get a link just pass the variable */
echo "<img src='$img->**link or href or anything you get**' class='img-responsive' />";
}

ОБНОВИТЬ

Если вы получаете текст или символы, возможно, вам придется использовать base64_encode(),

Попробуй это :


$img = base64_encode(CallAPI($imgLinkFromValue ));
echo '<img src="data:image/jpeg;base64,' . $img . '" class="img-responsive" />'

Вы всегда можете изменить данные внутри src на png или gif, в зависимости от того, что вам нужно.

Для получения дополнительной информации о функции base64_encode вы можете воспользоваться этой ссылкой.
http://php.net/manual/en/function.base64-encode.php

1

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

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

По вопросам рекламы [email protected]