Форум программистов, компьютерный форум, киберфорум
Java: API, боты
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 26.11.2015
Сообщений: 2
1

API Яндекс диска

26.11.2015, 19:19. Показов 2333. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пишу прогу которая поможет скачать файл из Яндекс диска, но почему то мне выводит ошибку 301 в чем проблема?
Документ уже не используется сервером, а ссылка перенаправляет на другую страницу (получен код 301 Moved Permanently).
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import java.io.*;
import java.net.*;
 
class HttpClient
{
    
   
    public static void main(String args[])
    {
        try
        {
            byte buf[] = new byte[64*1024];
            int r;
 
            // читаем файл с запросом в переменную header
            FileInputStream fis = new FileInputStream("testrequest.txt");
            r = fis.read(buf);
            String header = new String(buf, 0, r);
            fis.close();
 
            // выделяем из строки запроса хост, порт и URL ресурса
            // для выделения используется специальнонаписанная ф-ия extract
            String host = extract(header, "Host:", "\n");
 
            // если не найден параметр Host - ошибка
            if(host == null)
            {
                System.out.println("invalid request:\n"+header);
                return;
            }
 
            // находим порт сервера, по умолчанию он - 80
            int port = host.indexOf(":",0);
            if(port < 0) port = 80;
            else
            {
                port = Integer.parseInt(host.substring(port+1));
                host = host.substring(0, port);
            }
 
            // открываем сокет до сервера
            Socket s = new Socket(host, port);
 
            // пишем туда HTTP request
            s.getOutputStream().write(header.getBytes());
 
            // получаем поток данных от сервера
            InputStream is = s.getInputStream();
 
            // Открываем для записи файл, куда будет слит лог
            FileOutputStream fos = new FileOutputStream("testreply.txt");
 
            // читаем ответ сервера, одновременно сливая его в открытый файл
            r = 1;
            while(r > 0)
            {
                r = is.read(buf);
                if(r > 0)
                    fos.write(buf, 0, r);
            }
            // закрываем файл
            fos.close();
            s.close();
        }
        catch(Exception e)
        {e.printStackTrace();} // вывод исключений
    }
 
    // "вырезает" из строки str часть, находящуюся между строками start и end
    // если строки end нет, то берётся строка после start
    // если кусок не найден, возвращается null
    // для поиска берётся строка до "\n\n" или "\r\n\r\n", если таковые присутствуют
    protected static String extract(String str, String start, String end)
    {
        int s = str.indexOf("\n\n", 0), e;
        if(s < 0) s = str.indexOf("\r\n\r\n", 0);
        if(s > 0) str = str.substring(0, s);
        s = str.indexOf(start, 0)+start.length();
        if(s < start.length()) return null;
        e = str.indexOf(end, s);
        if(e < 0) e = str.length();
        return (str.substring(s, e)).trim();
    }
}
содержимое фала testrequest.txt:
XML
1
2
3
4
GET /otchet_1.docx HTTP/1.1
Host: webdav.yandex.ru
Accept: */*
Authorization: OAuth dd69d1a42a884687b0d1dbd3cea099d5
выводит в файл testreply.txt:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
HTTP/1.1 301 Moved Permanently
Server: nginx/1.6.3
Date: Thu, 26 Nov 2015 16:16:05 GMT
Content-Type: text/html
Content-Length: 184
Connection: keep-alive
Location: [url]https://webdav.yandex.ru/otchet_1.docx[/url]
 
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.6.3</center>
</body>
</html>
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.11.2015, 19:19
Ответы с готовыми решениями:

Статус операции в REST API Яндекс Диска
Слыхал, что скоро введут цензуру на некоторые сайты, решил скачать такой сайт себе на Яндекс диск....

Скачать файл с яндекс диска через REST API
Пробую скачать файл с яндекс диска с помощью REST API. Для этого применяю curl. Делаю два...

Яндекс Метрика API (создать счетчик по API)
Добрый день, ранее с метрикой немного стыкася. Сейчас постала задача сделать небольшую админку с...

Яндекс API
Уже третий день копаю инте чтобы найти ответ, есть ТП с адресами как запихать их в Яндекс API чтобы...

0
26.11.2015, 19:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.11.2015, 19:19
Помогаю со студенческими работами здесь

Яндекс Диска
В общем дело было так, вчера (для проверки) закинул на сервис яндекс диск файл &quot;backup.tar&quot; который...

API Яндекс.Карты
Всем привет. Ребят, можно ли меткам на карте добавить label? В офф.документации не нашел или плохо...

Яндекс транспорт API
Здравствуйте, как получить доступ к API яндекс транспорта?

API Яндекс.Расписание
Здравствуйте. Можете мне коротко объяснить (можно пример кода) как пользоваться. Там есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru