Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2012, 07:33   #1
alekola
gcc 4.7.1 Opensuse
Пользователь
 
Аватар для alekola
 
Регистрация: 07.03.2012
Сообщений: 22
По умолчанию WebDav клиент на дельфи

Люди добрый есть у кого знание\опыт в этой области?
В indy 10 есть вроде компонент(tidwebdav)..но не примеров не справки по нему не нашел.Может кто чем другим пользовался напишите пожалуйста.
Хочу авторизоваться на вебдав сервере и провести синхронизацию файлов.
Пробывал вот так
Код:
Wd.URL.Password:='pass';
wd.URL.Username:='user';
wd.URL.Port:='80';
wd.URL.URI:='http://ftp.sanremo-dv.ru/owncloud';
wd.URL.Path:='http://ftp.sanremo-dv.ru/owncloud';
wd.URL.Host:='http://ftp.sanremo-dv.ru/owncloud';
wd.Connect('http://ftp.sanremo-dv.ru/owncloud',80);
пишет не найдет хост. Хотя по указанным ссылкам прекрасно попадает на веб интерфейс
alekola вне форума Ответить с цитированием
Старый 12.03.2012, 08:38   #2
alekola
gcc 4.7.1 Opensuse
Пользователь
 
Аватар для alekola
 
Регистрация: 07.03.2012
Сообщений: 22
По умолчанию

Код:
Wd.URL.Password:='*';
wd.URL.Username:='*';
wd.URL.Port:='80';
wd.URL.URI:='/owncloud';
wd.URL.Path:='http://ftp.sanremo-dv.ru/owncloud';
wd.URL.Host:='http://ftp.sanremo-dv.ru/owncloud';
wd.Connect('http://ftp.sanremo-dv.ru',80);

  if wd.Connected then
      ShowMessage('ok');
получилось соеденится!!! +) теперь научится бы остальному
alekola вне форума Ответить с цитированием
Старый 01.04.2012, 13:42   #3
postal2
Форумчанин
 
Аватар для postal2
 
Регистрация: 31.10.2008
Сообщений: 215
По умолчанию

alekola, есть прогресс? Тоже интересуюсь =)
[Ferox]
postal2 вне форума Ответить с цитированием
Старый 09.06.2012, 17:16   #4
alekola
gcc 4.7.1 Opensuse
Пользователь
 
Аватар для alekola
 
Регистрация: 07.03.2012
Сообщений: 22
По умолчанию

Нет, все откладываю, да откладываю - нахватает времени разобраться =\ Если что нарою отпишусь
alekola вне форума Ответить с цитированием
Старый 13.06.2012, 03:34   #5
alekola
gcc 4.7.1 Opensuse
Пользователь
 
Аватар для alekola
 
Регистрация: 07.03.2012
Сообщений: 22
По умолчанию

Вот кому нужно, отрывки кода
подключим в uses модули Synapse:
httpsend,
synacode,
ssl_openssl
Код:
type
  TWebDAVSend = class
  private
    FHTTP : THTTPSend;
    FToken: AnsiString;
    FPassword: string;
    FLogin: string;
    procedure SetLogin(const Value: string);
    procedure SetPassword(const Value: string);
    procedure SetToken;
  public
    constructor Create;
    destructor Destroy; override;
    property Login: string read FLogin write SetLogin;
    property Password: string read FPassword write SetPassword;
end;
 
{ TWebDAVSend }
 
constructor TWebDAVSend.Create;
begin
  inherited;
  FHTTP:=THTTPSend.Create;
end;
 
destructor TWebDAVSend.Destroy;
begin
  FHTTP.Free;
  inherited;
end;
 
procedure TWebDAVSend.SetToken;
begin
  FToken:=EncodeBase64(FLogin+':'+FPassword);
end;
 
procedure TWebDAVSend.SetLogin(const Value: string);
begin
  FLogin := Value;
  SetToken;
end;
 
procedure TWebDAVSend.SetPassword(const Value: string);
begin
  FPassword := Value;
  SetToken;
end;
function TWebDAVSend.PROPFIND(Depth: integer; const Element: String): string;
begin
  with FHTTP do
  begin
    Headers.Clear;
    Document.Clear;
    Headers.Add('Authorization: Basic ' + FToken);
    Headers.Add('Depth: ' + IntToStr(Depth));
    Headers.Add('Accept: */*');
    if HTTPMethod('PROPFIND', GetRequestURL(Element)) then
      result := ReadStrFromStream(Document, Document.Size)
    else
      raise Exception.Create(rsPropfindError+' '+ResultString);
  end;
end;
const
  cWebDAVServer = 'https://webdav.yandex.ru/';
function TWebDAVSend.GetRequestURL(const Element: string): string;
var URI: string;
begin
  URI:=Element;
  if URI[1]='/' then
    Delete(URI,1,1);
  Result:=cWebDAVServer+EncodeUTF8URI(URI);
end;
function TWebDAVSend.EncodeUTF8URI(const URI: string): string;
var
  i: integer;
  Char: AnsiChar;
begin
  result := '';
  for i := 1 to length(URI) do
  begin
    if not(URI[i] in URLFullSpecialChar) then
      begin
      for Char in UTF8String(URI[i]) do
        Result:=Result+'%'+IntToHex(Ord(Char), 2)
      end
    else
      Result:=Result+URI[i];
  end;
end;
function TWebDAVSend.MKCOL(const ElementPath: string): boolean;
begin
  Result:=False;
  with FHTTP do
  begin
    Headers.Clear;
    Document.Clear;
    Headers.Add('Authorization: Basic ' + FToken);
    Headers.Add('Accept: */*');
    if HTTPMethod('MKCOL', GetRequestURL(ElementPath)) then
      begin
        Result:=ResultCode=201;
        if not Result then
          raise Exception.Create(IntToStr(ResultCode)+' '+ResultString);
      end
    else
      raise Exception.Create(rsPropfindError+' '+ResultString);
  end;
end;
alekola вне форума Ответить с цитированием
Старый 13.06.2012, 03:34   #6
alekola
gcc 4.7.1 Opensuse
Пользователь
 
Аватар для alekola
 
Регистрация: 07.03.2012
Сообщений: 22
По умолчанию

___________________________________ _____________
alekola вне форума Ответить с цитированием
Старый 24.11.2014, 17:20   #7
X11
Пользователь
 
Регистрация: 20.01.2010
Сообщений: 54
По умолчанию

а я indy IdWebDAV ещё кто-нибудь работал?
Есть примеры?
X11 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
таблицы подстановок в дельфи(базы данных в дельфи) ManiagoZ БД в Delphi 0 15.05.2011 15:07
Как отправить видео захват(с веб-Кам.) Клиент->Сервер->Клиент RODNOC Мультимедиа в Delphi 17 03.10.2010 22:31
сервер+клиент+клиент на телефон Razyiller Работа с сетью в Delphi 3 01.04.2010 20:10
Возможно-ли Клиент-серверное приложение типа Клиент(Pascal) а сервер(CGI)? Demol Работа с сетью в Delphi 1 21.04.2009 16:18