Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> обмен двнными по TCP, Глюк при использовании HTTP протокола 
V
    Опции темы
slavonX86
Дата 28.1.2006, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 15.12.2005

Репутация: нет
Всего: 0



ДЛЯ ОБМЕНА ДАННЫМИ ПО HTTP использую пакет SimpleTCP. Запрос генерирую сам.

Встретился с такой проблемой. Я хочу загрузить PNG картинку с саита. Отправляю запрос и получаю ответ:
Код

HTTP/1.1 200 OK
Date: Sat, 28 Jan 2006 18:17:37 GMT
Server: Apache/1.3.34 (Unix) PHP/4.4.2
X-Powered-By: PHP/4.4.2
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Connection: close
Content-Type: image/png

‰PNG





а вот что показал сниффер:
Код

......жђ .....E.
.Б;[email protected].џoTь’.Гё
Вс.P.У!.5лаdр\P.
д Й“..HTTP/1.1 2
00 OK..Date: Sat
, 28 Jan 2006 18
:04:36 GMT..Serv
er: Apache/1.3.3
4 (Unix) PHP/4.4
.2..X-Powered-By
: PHP/4.4.2..Exp
ires: Thu, 19 No
v 1981 08:52:00 
GMT..Cache-Contr
ol: no-store, no
-cache, must-rev
alidate, post-ch
eck=0, pre-check
=0..Pragma: no-c
ache..Connection
: close..Content
-Type: image/png
....‰PNG........
IHDR............
..ю<б....PLTE...
яяяҐЩџЭ... IDAT.
™cшяяя..b?.х@вы~
..›.B‚X“1..А‘sў&
9.З....IEND®B`‚


Я подумал что глючиный компонент и зделал через TCPClient, но с ним такая же фигня.

! Помогите загрузить картинку !
PM MAIL ICQ   Вверх
Snowy
Дата 29.1.2006, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Код нужен, однако.
Буз кода не понять, что у тебя не так.
PM MAIL   Вверх
slavonX86
Дата 29.1.2006, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 15.12.2005

Репутация: нет
Всего: 0



1) TcpClient1.Connect;

2)
Код
     Memo1.Lines.Add('GET / ССЫЛКА_НА_КАРТИНКУ HTTP/1.0');
     Memo1.Lines.Add('Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, */*');
     Memo1.Lines.Add('Referer: XXXXXXXXXXXXXXXXXX');
     Memo1..Lines.Add('UA-CPU: x86 ');
     Memo1.Data.Lines.Add('User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)');
     Memo1.Lines.Add('Host: XXXXXXXXXXXX);
     Memo1.Lines.Add('Connection: Keep-Alive');
     Memo1.Lines.Add('Cookie: wmmail=XXXXXXXXXXXXXXXXXXXXX');
     Memo1.Lines.Add('');


3)
Код
     Memo1.Lines.SaveToStream(Stream);
     TcpClient1.SendStream(Stream);


4)
Далее читаю: TcpClient1.ReceiveBuf


P.S.> Рисунок приходит на компьютер, но ни один (SimpleTCP, TcpClient, ...) сетевой компонент не читает !!!
PM MAIL ICQ   Вверх
Snowy
Дата 29.1.2006, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Цитата(slavonX86 @ 29.1.2006, 10:54 Найти цитируемый пост)

Далее читаю: TcpClient1.ReceiveBuf

Вот как раз это и интересно.
Как именно и куда ты читаешь?
Вся проблемма именно тут.
PM MAIL   Вверх
slavonX86
Дата 29.1.2006, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 15.12.2005

Репутация: нет
Всего: 0



Пробовал грузить через: idHTTP1.Get('..........'); БЕЗРЕЗУЛЬТАТНО !!!

Хм, вобще картинки не грузятся !!!

Как можно загрузить картинку с саита ?

Это сообщение отредактировал(а) slavonX86 - 29.1.2006, 20:14
PM MAIL ICQ   Вверх
Snowy
Дата 29.1.2006, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Покажи код загрузки.
Все можно загрузить.
Что-то делаешь не так.
Только что... Нужно посмотреть код, как ты загружаешь и куда.
Скорее всего проблемма именно в "куда".
PM MAIL   Вверх
Rexar
Дата 29.1.2006, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 14.12.2005

Репутация: нет
Всего: 0



Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdAntiFreezeBase, IdAntiFreeze, IdBaseComponent,
  IdComponent, IdTCPConnection, IdTCPClient, IdHTTP;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    IdHTTP1: TIdHTTP;
    IdAntiFreeze1: TIdAntiFreeze;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  idHTTP1.Request.Host := 'www.rambler.ru';
  idHTTP1.Request.Accept := 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, */*';
  idHTTP1.Host := 'rambler.ru';
  Memo1.Text := idHTTP1.Get('http://images.rambler.ru/head2005/rambler2.gif');
end;

end.



Тут я пытаюсь загрузить картинку с сайта rambler.ru

А в мемо приходит вот такой текст:
Код

GIF89a


А вот что показал сниффер:
Код

......x .....E.
.ÆŸ‘@.2.‹¨Q.BAø
Âë.P.mèÅFŽ9v"fP.
Dp]<..HTTP/1.1 2
00 OK..Server: n
ginx/0.3.15..Dat
e: Sun, 29 Jan 2
006 19:28:48 GMT
..Content-Type: 
image/gif..Conte
nt-Length: 614..
Last-Modified: S
un, 25 Sep 2005 
12:01:33 GMT..Co
nnection: keep-a
live..Keep-Alive
: timeout=20..Ex
pires: Sat, 29 A
pr 2006 19:28:48
 GMT..Cache-Cont
rol: max-age=777
6000..Accept-Ran
ges: bytes....GI
F89a....Õ.....ÿÿ
ÿààâÛÛÝÖÖØÌÌÎùùú
ïïðææçª«¯¨©­¡¢¦Ÿ
 ¤žŸ£¤¥¨´µ¸­®±ÒÓ
ÕÏÐÒÈÉËÅÆÈÁÂĽ¾À
…­ØkœÏüýþÉßò.fµL
“È�Ãç©Òë$ŽÍ.ŠÊaµ
ßçõüûýþÍíü.¤Ü.¬ß
7·ê?¿òC»îB³ãKÉûO
´àQ·âb¿çjÍôtÆè…Ô
ôYÑÿo×þ|Úþ�ßþšäÿ
©äûºëþòúýòóóêëëþ
þþüüüöööÿÿÿ!ù...
.?.,..........ÿÀ
?p(Ü..�.áa..ˆP¨à
Ѩ&.‘jÃQxF‡†ŠÖŠ.
o.ß?.an\³mIÔ.i7,
<�Â.�ZÌ..:B<....
f.C.f.=..8$”..;{
Z.….uZ....7¤¥...
.c..;c....,10¶·.
..cI.«.. &,ÄÅ,..
.žU>TU... Â*ÕÖ*%
 .pU.ªU.<Ó%&))(è
)'&%!®ZÜ... %'(+
+2ûùë,>c.Œ±.àƒ.|
2h(¤1CÆŠ....ÌÔàA
..'ôѨÁ‘#..(b .³
D....N$¬a£¥.Ž3V�
.¨..œ..zˆHñ‚£�ƒ.
8n¼¤..Ë‚g=t0°0è?
..=N.ú2‡.5bæ..`
`‚.>HÄ`‰£lË...P
x‚àÀ�.ß.(@ÀƒDÙ²"
zøªâ B.".ÚX.°ƒ‡�
..âVQp•.M;�.¸�ò.
ò˜.;Ò.@ÀÆr..^4.(
ÙfifÍQt. @�‚..¡£
...;


P.S > т.е. картинка приходит, но не читается.

Это сообщение отредактировал(а) Rexar - 29.1.2006, 22:33
PM MAIL   Вверх
N1k
Дата 30.1.2006, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 4.1.2006

Репутация: 2
Всего: 2



Цитата(Rexar @ 29.1.2006, 22:31 Найти цитируемый пост)

P.S > т.е. картинка приходит, но не читается.

Не читаются ЧЕМ? MEMO?
C чего ты взял что в мемо что-то должно отображаться кроме того что у тебя отображается?
И вообще, каким боком мемо связано с картинкой....
PM MAIL   Вверх
slavonX86
Дата 30.1.2006, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 15.12.2005

Репутация: нет
Всего: 0



Птому что это ответ на запрос !!!
Это параметр Data HTTP протокола !!!
PM MAIL ICQ   Вверх
N1k
Дата 30.1.2006, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 4.1.2006

Репутация: 2
Всего: 2



Цитата(slavonX86 @ 30.1.2006, 09:58 Найти цитируемый пост)

Птому что это ответ на запрос !!!
Это параметр Data HTTP протокола !!!

Но это не текст!!!!!!!!!!
Попробуй сделать это и ты, я надеюсь, все поймешь.
Код

...
var
  s:string;
begin
  s:='qqqqqqqqqqqqqq'+#0+'wwwwwwwwwwwww';
  Memo1.Text:=s;
....

Грузи в картинку.
PM MAIL   Вверх
Snowy
Дата 30.1.2006, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Цитата(Rexar @ 29.1.2006, 22:31 Найти цитируемый пост)
Memo1.Text := idHTTP1.Get

Ну вот. Как я и говорил, вся проблема в "куда"
Ты пытаешься запихать бинарные данные в текст.
Естественно, что первая текстовая часть проходит нормально.
А вот бинарная часть режется на первом же #0.
Все принимается нормально, просто #0 распознается как конец строки.
Можешь проверить на примере:
Код
  ShowMessage('Мама мыла '+#0+'раму');

Отобразить бинарные данные можно в HEX или сохранить в файл.
Можешь банально получить ответ на запрос в string, а потом все #0 заменить на '0'.
Смотри, что тебе больше подходит.

PM MAIL   Вверх
slavonX86
Дата 30.1.2006, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 15.12.2005

Репутация: нет
Всего: 0



Пасиба !!!

Ответ на вопрос я получил, можете закрывать тему !!!

Это сообщение отредактировал(а) slavonX86 - 30.1.2006, 10:27
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0901 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.