Что нового

InetRead и скачка картинки по ссылке

Gzzk

Новичок
Сообщения
104
Репутация
1
Есть такой код:
Код:
$sResponse = BinaryToString(InetRead("https://api.vk.com/method/wall.get.xml?owner_id=-32194285&offset=1&count=1&version=5.27"), 4)
$buf=StringRegExp($sResponse,"<src_xbig>(.*?)</src_xbig>",3)
If(IsArray($buf)) Then
For $i = 0 To UBound($buf)-1
	ConsoleWrite($buf[$i]&@CRLF)
Next
Else
	$buf=StringRegExp($sResponse,"<src_big>(.*?)</src_big>",3)
	For $i = 1 To UBound($buf)-1
	ConsoleWrite($buf[$i]&@CRLF)
Next
EndIf
InetGet($buf[1], @TempDir & "1.jpg")
Local $hDownload = InetGet($buf[1], @TempDir & "\1232.jpg", 1, 1)
Do
    Sleep(250)
Until InetGetInfo($hDownload, 2) ; Проверка завершения загрузки
Local $nBytes = InetGetInfo($hDownload, 0)
InetClose($hDownload) ; Закрыть дескриптор, чтобы освободить ресурсы.
MsgBox(4096, "", "Количество прочитанных байт: " & $nBytes)

В массиве по индексу 1 всегда есть ссылка,однако файл не появляется,даже когда выводит кол-во байтов отличное от нуля.Windows 7,IE 11.
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
Код:
$sResponse = BinaryToString(InetRead("http://api.vk.com/method/wall.get.xml?owner_id=-32194285&offset=1&count=1&version=5.27"), 4)
$buf=StringRegExp($sResponse,"(?si)<src_xbig>(.*?)</src_xbig>",3)
ConsoleWrite($buf[1]&@CRLF)
If(IsArray($buf)) Then
For $i = 0 To UBound($buf)-1
    ConsoleWrite($buf[$i]&@CRLF)
Next
Else
    $buf=StringRegExp($sResponse,"<src_big>(.*?)</src_big>",3)
    For $i = 1 To UBound($buf)-1
    ConsoleWrite($buf[$i]&@CRLF)
Next
EndIf
InetGet($buf[1], @TempDir & "\1.jpg")

WindowsXP закачивается.
 
Автор
G

Gzzk

Новичок
Сообщения
104
Репутация
1
edyapd сказал(а):
Код:
$sResponse = BinaryToString(InetRead("http://api.vk.com/method/wall.get.xml?owner_id=-32194285&offset=1&count=1&version=5.27"), 4)
$buf=StringRegExp($sResponse,"(?si)<src_xbig>(.*?)</src_xbig>",3)
ConsoleWrite($buf[1]&@CRLF)
If(IsArray($buf)) Then
For $i = 0 To UBound($buf)-1
    ConsoleWrite($buf[$i]&@CRLF)
Next
Else
    $buf=StringRegExp($sResponse,"<src_big>(.*?)</src_big>",3)
    For $i = 1 To UBound($buf)-1
    ConsoleWrite($buf[$i]&@CRLF)
Next
EndIf
InetGet($buf[1], @TempDir & "\1.jpg")

WindowsXP закачивается.
Какой IE?
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Win 7 . картинка загружается
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Gzzk [?]
я им не пользуюсь. не знаю. наверное последняя. но не помню ни одного бага с функцией InetRead и другими подобными
 
Автор
G

Gzzk

Новичок
Сообщения
104
Репутация
1
А в чём вообще может быть проблема?
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
У меня ещё не хочет работать по https По http работает прекрасно.
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
alex33 сказал(а):
Попробуйте поставить флаг 2
При любом флаге возвращает @error = 1
Возможно из-за того, что у меня версия программы старинная.
Потому как если просто вставить url с https в Оперу, то сервер возвращает данные.
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Вот у меня всё нормально работает... Приведите код вместе с URL и я его проверю у себя.


Добавлено:
Сообщение автоматически объединено:

Вот, например скачать мою фотку из контакта по https
Код:
Local $sUrl = "https://pp.vk.me/c618217/v618217835/1a2e1/ukoIvv1sURo.jpg"
InetGet($sUrl, @ScriptDir & "\my_photo_vk.jpg", 2)
ConsoleWrite("error: " & @error & ", extended: " & @extended & @CRLF)

Всё работает.
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
alex33 сказал(а):
Приведите код вместе с URL и я его проверю у себя.
Здесь если вместо http поставить https, то BinaryToString будет кричать, что ему подсунули строку с нулевым размером.

alex33 сказал(а):
Вот, например скачать мою фотку из контакта по https
Код:
Local $sUrl = "https://pp.vk.me/c618217/v618217835/1a2e1/ukoIvv1sURo.jpg"
InetGet($sUrl, @ScriptDir & "\my_photo_vk.jpg", 2)
ConsoleWrite("error: " & @error & ", extended: " & @extended & @CRLF)

Всё работает.
В этом примере выдаёт: error: 13, extended: 12029
 
Автор
G

Gzzk

Новичок
Сообщения
104
Репутация
1
Проблема решена.
До:
Код:
InetGet($buf[1], @TempDir & "/1.jpg")

После:
Код:
InetGet($buf[1], @ScriptDir & "\1.jpg")
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
Gzzk сказал(а):
Проблема решена.
До:
Код:
InetGet($buf[1], @TempDir & "/1.jpg")

После:
Код:
InetGet($buf[1], @ScriptDir & "\1.jpg")
Директории тут совсем не причём. Всё дело в слеше. Рабочий вариант был дан ещё сутки назад.
 
Автор
G

Gzzk

Новичок
Сообщения
104
Репутация
1
edyapd сказал(а):
Gzzk сказал(а):
Проблема решена.
До:
Код:
InetGet($buf[1], @TempDir & "/1.jpg")

После:
Код:
InetGet($buf[1], @ScriptDir & "\1.jpg")
Директории тут совсем не причём. Всё дело в слеше. Рабочий вариант был дан ещё сутки назад.
Я догадался попробовать и флаг, и слэш, и директории.Не работает у меня с @TempDir.
 
Верх