Synapse хочу разобраться

Модератор: Модераторы

Synapse хочу разобраться

Сообщение silentspirit » 28.03.2017 18:45:19

Пытаюсь подключиться к Yandex диску по WebDav использую Synapse. Но ответ не получаю... Размер Document = 0

with ya do
begin
Headers.Clear;
Document.Clear;
Headers.Add('Authorization: Basic ' + EncodeBase64(yaToken));
Headers.Add('Depth ' + IntToStr(1));
if HTTPMethod('PROPFIND', yaServer) then Memo1.Text:=IntToStr(Document.Size)
else
Memo1.Text:=IntToStr(Document.Size);
end;
silentspirit
новенький
 
Сообщения: 13
Зарегистрирован: 10.02.2017 01:25:41

Re: Synapse хочу разобраться

Сообщение vitaly_l » 28.03.2017 19:12:25

silentspirit писал(а):PROPFIND

Код: Выделить всё
      UserAgent := 'Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20170328 Firefox/5.0';
      Headers.Add('Accept: *.*');
      Protocol := '1.1'; 
      if HTTPMethod('GET', yaServer) then ...


https://tech.yandex.ru/disk/doc/dg/reference/propfind-docpage/

.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Synapse хочу разобраться

Сообщение silentspirit » 28.03.2017 19:47:05

В данном примере хочу получить список файлов с диска (Depth 1) и не могу понять вообще идет обращение к Yandex? Он ничего не возвращает (Document.Size = 0)

with ya do
begin
Headers.Clear;
Document.Clear;
Headers.Add('Authorization: Basic ' + EncodeBase64(yaToken));
Headers.Add('Depth ' + IntToStr(1));
Headers.Add('Accept: *.*');
Protocol := '1.1';
UserAgent := 'Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20170328 Firefox/5.0';

if HTTPMethod('PROPFIND', yaServer) then Memo1.Text:=IntToStr(Document.Size)
else
Memo1.Text:=IntToStr(Document.Size);
end;
silentspirit
новенький
 
Сообщения: 13
Зарегистрирован: 10.02.2017 01:25:41

Re: Synapse хочу разобраться

Сообщение pupsik » 28.03.2017 20:11:47

и не могу понять вообще идет обращение к Yandex
что возвращает сервер?
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Synapse хочу разобраться

Сообщение vitaly_l » 28.03.2017 21:34:26

silentspirit писал(а):хочу получить список файлов с диска (Depth 1) и не могу понять вообще

Код: Выделить всё
PROPFIND / HTTP/1.1
Host: webdav.yandex.ru
Accept: */*
Depth: 1
Authorization: OAuth 0c4181a7c2cf4521964a72ff57a34a07

Код: Выделить всё
PROPFIND /Downloads/?offset=3&amount=3 HTTP/1.1
Host: webdav.yandex.ru
Accept: */*
Depth: 1
Authorization: OAuth 0c4181a7c2cf4521964a72ff57a34a07

https://tech.yandex.ru/disk/doc/dg/reference/propfind_contains-request-docpage/#propfind_contains-request
Где в примерах АПИ => Basic <= ???
И вот это тоже, лучше как у них указать: Accept: */*
Сделайте запрос, в точности как в примерах API, и посмотрите что возвращает сервер.
Попробуйте сделать GET запрос, из браузера, и посмотрите что возвращает сервер.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Synapse хочу разобраться

Сообщение silentspirit » 28.03.2017 23:12:17

Через telnet не могу подключиться к https://webdav.yandex.ru так webdav.yandex.ru тоже нет.
Как сделать GET запрос, из браузера?
silentspirit
новенький
 
Сообщения: 13
Зарегистрирован: 10.02.2017 01:25:41

Re: Synapse хочу разобраться

Сообщение vitaly_l » 28.03.2017 23:21:34

silentspirit писал(а):не могу подключиться к https://webdav.yandex.ru так webdav.yandex.ru тоже нет.

Ну как нет если вот: https://webdav.yandex.ru/readme.pdf <== вбейте в обычный webbrowser и введите логин с паролем
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Synapse хочу разобраться

Сообщение silentspirit » 28.03.2017 23:56:41

Сдвинулось с мертвой точки, но, огорчает ответ(((
Сделал запрос как в примерах API

with ya do
begin
Headers.Clear;
Document.Clear;
Headers.Add('Authorization: Basic ' + EncodeBase64(yaToken));
Headers.Add('Depth: ' + IntToStr(1));
Headers.Add('Accept: */*');
Protocol := '1.1';
UserAgent := 'Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20170328 Firefox/5.0';
if HTTPMethod('PROPFIND', 'webdav.yandex.ru') then Memo1.Lines.LoadFromStream(Document)
end;

Получил такой ответ:

<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.8.1</center>
</body>
</html>
А хотел получить содержимое каталога(
silentspirit
новенький
 
Сообщения: 13
Зарегистрирован: 10.02.2017 01:25:41

Re: Synapse хочу разобраться

Сообщение Ichthyander » 29.03.2017 00:18:59

Так посмотрите куда идет редирект в заголовке HTTP ответа

Добавлено спустя 1 минуту 36 секунд:
Да, и не забыли подключить SSL к synapse?
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 668
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Re: Synapse хочу разобраться

Сообщение silentspirit » 29.03.2017 08:50:10

При запросе через браузер https://webdav.yandex.ru/test.docx после ввода логин/пароль файл успешно скачивается.

Какая переменная содержит заголовок HTTP ответа?

Да ssl_openssl подключил.
silentspirit
новенький
 
Сообщения: 13
Зарегистрирован: 10.02.2017 01:25:41

Re: Synapse хочу разобраться

Сообщение Ichthyander » 29.03.2017 10:56:04

Headers
Обычно в заголовке HTTP ответа что-то вроде этого должны быть [помимо прочих строк]
Код: Выделить всё
...
Location: http://New_URL_ADDRESS.com/newdir/newpage.html
...
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 668
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Re: Synapse хочу разобраться

Сообщение silentspirit » 29.03.2017 12:04:47

Значение Headers после выполнения запроса (if HTTPMethod('PROPFIND', 'webdav.yandex.ru') then Memo1.Lines.Text:=Headers.Text;)

HTTP/1.1 301 Moved Permanently
Server: nginx/1.8.1
Date: Wed, 29 Mar 2017 08:04:30 GMT
Content-Type: text/html
Content-Length: 184
Connection: keep-alive
Location: https://webdav.yandex.ru/
silentspirit
новенький
 
Сообщения: 13
Зарегистрирован: 10.02.2017 01:25:41

Re: Synapse хочу разобраться

Сообщение Ichthyander » 29.03.2017 15:13:13

Ну вот этим HTTP заголовком сервер Вам дает инструкцию перейти по https://webdav.yandex.ru/
Почему? Не знаю. Но любой браузер именно это и сделает. Попробуйте сделать значит еще один запрос и посмотреть, что сервер ответит в теле ответа. Я не знаю тонкости реализации webdav, говорю как нужно обработать конкретно этот ответ сервера

Добавлено спустя 2 минуты 17 секунд:
Могу преподоложить, что сервер отправляет Вас на главную страницу для авторизации, после который Вы сможете вернуться на запрашиваемую страницу уже авторизованным
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 668
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Re: Synapse хочу разобраться

Сообщение silentspirit » 29.03.2017 22:24:46

Собственно с этого все и начиналось. В документации на этой странице https://tech.yandex.ru/disk/doc/dg/conc ... t-docpage/ говорится, что хост https://webdav.yandex.ru однако при таком значении сервер ничего не возвращает. На этой странице https://tech.yandex.ru/disk/doc/dg/refe ... ns-request (Запрос всего содержимого каталога) Host: webdav.yandex.ru При таком значении сервер возвращает выложенные мною значения, но перенаправляет меня на:) https://webdav.yandex.ru/ При повторном вызове PROPFIND (предварительно вызвав Headers.Clear; Document.Clear; Host: https://webdav.yandex.ru/) сервер опять ничего не возвращает (Document.Size = 0) Как быть?
silentspirit
новенький
 
Сообщения: 13
Зарегистрирован: 10.02.2017 01:25:41

Re: Synapse хочу разобраться

Сообщение olegy123 » 29.03.2017 22:36:39

Заголовок пустой?
Вы точно используете https и обращаетесь по порту 443?
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

След.

Вернуться в Сети

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

Рейтинг@Mail.ru