Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Отделить заголовок от html

Ответить
Настройки темы
[решено] Отделить заголовок от html

Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


Вложения
Тип файла: txt 1.txt
(5.0 Kb, 28 просмотров)
Здравствуйте!
Отправляю серверу по 80 порту заголовок, получаю заголовок и файл png.
Необходимо отделить заголовок в отдельную переменную и правильно сохранить файл 1.png.

То что возвращает сервер во вложениях.
Помогите плиз.....

-------
Хочу научиться писать драйвера на с++


Отправлено: 17:15, 13-04-2010

 

Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


Цитата madmasles:
Попробуйте моим последним кодом обработать test.png »
неа, не получается...
Ладно раз ничего не сделать, тогда сделаю обновление изображения пока не скачается то что нужно...

-------
Хочу научиться писать драйвера на с++


Отправлено: 14:36, 14-04-2010 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


morgan1991,
Я ведь все свои эксперименты проводил с Вашим файлом из первого поста. С этим файлом у меня работает, а с другими... ? не знаю.
Прикрепите хотя бы 2 файла с разными заголовками, может что и получится.

Отправлено: 17:13, 14-04-2010 | #22


Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


Решил сам, заметил если появляется эта строчка перед пнг 12156, то добавляется
Transfer-Encoding: chunked
Вот я и сделал так:
Код: Выделить весь код
Local $FileReadBody = FileOpen($sFile, 0)
                If StringInStr(FileRead($FileReadBody), "Transfer-Encoding: chunked") > 0 Then
                    For $i = 1 To 13
                        $Body &= FileReadLine($hRead) & @CRLF
                    Next
                Else
                    For $i = 1 To 12
                        $Body &= FileReadLine($hRead) & @CRLF
                    Next
                EndIf
Вместо:
Код: Выделить весь код
For $i = 1 To 12
    $line = FileReadLine($hRead)
Next
madmasles, а как вы так код расскрашиваете, что он с ссылками выводится?

-------
Хочу научиться писать драйвера на с++


Отправлено: 19:40, 14-04-2010 | #23


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


morgan1991,
В Опциях посмотрите.
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:51, 14-04-2010 | #24


Пользователь


Сообщения: 67
Благодарности: 13

Профиль | Отправить PM | Цитировать


А так?
Код: Выделить весь код
$somedata=FileOpen("1.txt",16)
$filtered=BinaryToString(FileRead($somedata))
while StringLeft($filtered,1)<>"‰"
	$filtered=StringTrimLeft($filtered,1)
WEnd
FileWrite("1.png",StringToBinary($filtered))

-------
Информация для размышления
Такому в вузах не научат

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:57, 14-04-2010 | #25


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


266903582,
Ваш код у меня отрабатывает, как надо.

Отправлено: 20:13, 14-04-2010 | #26


Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


Вот ещё возник вопрос,необходимо получить весь код который присылает сервер, но как это сделать?
Вот мои мысли:
Получить заголовок
Затем из заголовка выковырять длинну контента и затем уже принимать данные через tcprecv пока колличество полученных данных меньше Content-lenght.
НО как обычно есть но. Не могу отделить заголовок до того как начинаю получать html, чтобы знать сколько данных принято и непонимаю почему иногда в заголовке приходит Content-lenght: число, а иногда просто число...

-------
Хочу научиться писать драйвера на с++


Отправлено: 01:15, 18-05-2010 | #27


Аватара для Sp01LeR

Пользователь


Сообщения: 60
Благодарности: 13

Профиль | Отправить PM | Цитировать


А что, - для закачки картинки нужно обязательно сокеты использовать?
Может есть смысл качнуть Wget'ом - он дополнительно может сохранять заголовки ответа сервера в отдельный файл и куки обрабатывает...
Во-первых насчет прикола с Content-Lenght - там сервер(а точнее скрипт) не корректное тело отдает... Я так понимаю, что грузятся капчи
Вобщем если все-таки нужно коннектится именно через сокеты и грузить бинарные данные то заголовки от содержимого в теле ответа отделяются так:
Код: Выделить весь код
#include <String.au3>
#include <Array.au3>

;$serv_resp_data - данные полученые через tcprecv

$content = _StringExplode($serv_resp_data, @CRLF&@CRLF, 1)

$heads=$content ; - заголовки ответа
$body=$content ; - тело ответа
Ну а уже вышеописаную проблему добавления отсебятины в тело ответа можно решать через фильтрацию HEX-данных, например если нужно грузить только картинки форматов JPG/GIF/PNG - делаем вот так:
Код: Выделить весь код
$jpg_hdr="FFD8FFE000104A464946"
$gif_hdr="47494638"
$png_hdr="89504E470D0A"

$body2hex=_StringToHex($body) ; конвертируем тело ответа в HEX-строку
$jpg_hdr_res=StringInStr($body2hex, $jpg_hdr)
$gif_hdr_res=StringInStr($body2hex, $gif_hdr)
$png_hdr_res=StringInStr($body2hex, $png_hdr)

If $jpg_hdr_res Then
	$trim_body_hex=StringTrimLeft($body2hex, $jpg_hdr_res-1)
Elsif $gif_hdr_res Then
	$trim_body_hex=StringTrimLeft($body2hex, $gif_hdr_res-1)
Elsif $png_hdr_res Then
	$trim_body_hex=StringTrimLeft($body2hex, $png_hdr_res-1)
Else
	MsgBox(4096, "", "Неккоректный формат бинарных данных в теле ответа!")
	Exit
EndIf

$body2str=_HexToString($trim_body_hex)

Отправлено: 20:29, 18-05-2010 | #28



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Отделить заголовок от html

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - Заголовок проводника Malfatto Microsoft Windows Vista 2 22-09-2008 21:46
Формат mkv: Как отделить субтитры от матрешки. incubb Хочу все знать 5 03-06-2008 10:42
Proxy/NAT - Отделить интернет gatecrasher Сетевые технологии 4 25-12-2007 05:23
как отделить слова от музыки Guest Хочу все знать 4 02-07-2004 02:01
Как отделить звук от клипа? vark Хочу все знать 19 07-01-2004 23:32




 
Переход