Synapse хочу разобраться
Модератор: Модераторы
-
silentspirit
- новенький
- Сообщения: 13
- Зарегистрирован: 10.02.2017 00:25:41
Synapse хочу разобраться
Пытаюсь подключиться к 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;
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 писал(а):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/
.
-
silentspirit
- новенький
- Сообщения: 13
- Зарегистрирован: 10.02.2017 00:25:41
В данном примере хочу получить список файлов с диска (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;
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;
что возвращает сервер?и не могу понять вообще идет обращение к Yandex
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 запрос, из браузера, и посмотрите что возвращает сервер.
-
silentspirit
- новенький
- Сообщения: 13
- Зарегистрирован: 10.02.2017 00:25:41
Через telnet не могу подключиться к https://webdav.yandex.ru так webdav.yandex.ru тоже нет.
Как сделать GET запрос, из браузера?
Как сделать GET запрос, из браузера?
silentspirit писал(а):не могу подключиться к https://webdav.yandex.ru так webdav.yandex.ru тоже нет.
Ну как нет если вот: https://webdav.yandex.ru/readme.pdf <== вбейте в обычный webbrowser и введите логин с паролем
-
silentspirit
- новенький
- Сообщения: 13
- Зарегистрирован: 10.02.2017 00:25: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>
А хотел получить содержимое каталога(
Сделал запрос как в примерах 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>
А хотел получить содержимое каталога(
- Ichthyander
- энтузиаст
- Сообщения: 701
- Зарегистрирован: 04.04.2007 08:32:43
- Откуда: Астрахань
- Контактная информация:
Так посмотрите куда идет редирект в заголовке HTTP ответа
Добавлено спустя 1 минуту 36 секунд:
Да, и не забыли подключить SSL к synapse?
Добавлено спустя 1 минуту 36 секунд:
Да, и не забыли подключить SSL к synapse?
-
silentspirit
- новенький
- Сообщения: 13
- Зарегистрирован: 10.02.2017 00:25:41
При запросе через браузер https://webdav.yandex.ru/test.docx после ввода логин/пароль файл успешно скачивается.
Какая переменная содержит заголовок HTTP ответа?
Да ssl_openssl подключил.
Какая переменная содержит заголовок HTTP ответа?
Да ssl_openssl подключил.
- Ichthyander
- энтузиаст
- Сообщения: 701
- Зарегистрирован: 04.04.2007 08:32:43
- Откуда: Астрахань
- Контактная информация:
Headers
Обычно в заголовке HTTP ответа что-то вроде этого должны быть [помимо прочих строк]
Обычно в заголовке HTTP ответа что-то вроде этого должны быть [помимо прочих строк]
Код: Выделить всё
...
Location: http://New_URL_ADDRESS.com/newdir/newpage.html
...
-
silentspirit
- новенький
- Сообщения: 13
- Зарегистрирован: 10.02.2017 00:25:41
Значение 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/
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/
- Ichthyander
- энтузиаст
- Сообщения: 701
- Зарегистрирован: 04.04.2007 08:32:43
- Откуда: Астрахань
- Контактная информация:
Ну вот этим HTTP заголовком сервер Вам дает инструкцию перейти по https://webdav.yandex.ru/
Почему? Не знаю. Но любой браузер именно это и сделает. Попробуйте сделать значит еще один запрос и посмотреть, что сервер ответит в теле ответа. Я не знаю тонкости реализации webdav, говорю как нужно обработать конкретно этот ответ сервера
Добавлено спустя 2 минуты 17 секунд:
Могу преподоложить, что сервер отправляет Вас на главную страницу для авторизации, после который Вы сможете вернуться на запрашиваемую страницу уже авторизованным
Почему? Не знаю. Но любой браузер именно это и сделает. Попробуйте сделать значит еще один запрос и посмотреть, что сервер ответит в теле ответа. Я не знаю тонкости реализации webdav, говорю как нужно обработать конкретно этот ответ сервера
Добавлено спустя 2 минуты 17 секунд:
Могу преподоложить, что сервер отправляет Вас на главную страницу для авторизации, после который Вы сможете вернуться на запрашиваемую страницу уже авторизованным
-
silentspirit
- новенький
- Сообщения: 13
- Зарегистрирован: 10.02.2017 00:25:41
Собственно с этого все и начиналось. В документации на этой странице 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) Как быть?
Заголовок пустой?
Вы точно используете https и обращаетесь по порту 443?
Вы точно используете https и обращаетесь по порту 443?
