Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / POST запрос через Jsoup / 16 сообщений из 16, страница 1 из 1
08.08.2017, 10:57
    #39501700
wolfio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
POST запрос через Jsoup
Здравствуйте, уважаемые знатоки.

пытаюсь сделать простой примерчик для обращения к сервису Яндекс SpeechKitCloud (распознавание речи через облако).
На сайте яндекса есть пример формата запроса, который я не очень понимаю

Код: 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.
import org.jsoup.Connection;
import org.jsoup.Jsoup;

import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Base64;

public class Recognize {

    public static void main(String[] args) throws IOException {

        ByteArrayOutputStream out = new ByteArrayOutputStream();
        BufferedInputStream in = new BufferedInputStream(new FileInputStream("C:/Users/mi/Downloads/speech.wav"));
        int read;
        byte[] buff = new byte[1024];
        while ((read = in.read(buff))>0){
            out.write(buff,0,read);
        }
        out.flush();
        byte[] audioBytes = out.toByteArray();
        String mimeEncoded = Base64.getMimeEncoder().encodeToString(audioBytes);

        Connection.Response response = Jsoup.connect("Https://asr.yandex.net/asr_xml?" +
                "uuid=01ae13cb744638b58fb536ddd496daa" +
                "&key=<<мой ключ к яндексу>>" +
                "&topic=numbers" +
                "&lang=ru-RU HTTP/1.1")
                .header("Host","asr.yandex.net")
                .header("Content-Type","audio/x-wav")
                .header("Content-Length", String.valueOf(mimeEncoded.length()))
//                .data(mimeEncoded)
                .method(Connection.Method.POST).execute();
    }

}



в ответ на это получаю ошибку вида:
Код: plaintext
1.
2.
3.
4.
Exception in thread "main" org.jsoup.HttpStatusException: HTTP error fetching URL. Status=400, URL=https://asr.yandex.net/asr_xml?uuid=01ae13cb744638b58fb536ddd496daa&key=<<мой ключ к яндексу>>&topic=numbers&lang=ru-RU%20HTTP/1.1
	at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:537)
	at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:493)
	at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:205)
	at Recognize.main(Recognize.java:34)

2 вопроса:
1. Куда совать в моем варианте запроса коде строку с аудиофайлом?
2. Из-за чего возникает ошибка?

оговорюсь, что я недоJunior

Спасибо.
...
Рейтинг: 0 / 0
08.08.2017, 11:12
    #39501717
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
POST запрос через Jsoup
Код: plaintext
&lang=ru-RU HTTP/1.1
Пробел в запросе?
...
Рейтинг: 0 / 0
08.08.2017, 11:16
    #39501721
wolfio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
POST запрос через Jsoup
Hett
Код: plaintext
&lang=ru-RU HTTP/1.1
Пробел в запросе?

Да. Но это уже окончательный вариант для оформления вопроса на форум, чтобы все выглядело как в их примере. Конечно же я и без пробела пробовал
...
Рейтинг: 0 / 0
08.08.2017, 11:16
    #39501722
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
POST запрос через Jsoup
прогнать запрос через network developer console в браузере и посмотреть где отличия

смущает это одинокое HTTP 1.1 это есть часть параметра lang?
...
Рейтинг: 0 / 0
08.08.2017, 11:22
    #39501726
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
POST запрос через Jsoup
wolfioHett
Код: plaintext
&lang=ru-RU HTTP/1.1
Пробел в запросе?

Да. Но это уже окончательный вариант для оформления вопроса на форум, чтобы все выглядело как в их примере. Конечно же я и без пробела пробовал
Думаю это нужно вообще убрать. Тут должен быть только адрес запроса с параметрами.
...
Рейтинг: 0 / 0
08.08.2017, 11:24
    #39501727
wolfio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
POST запрос через Jsoup
исключил HTTP/1.1
теперь в среде ошибка все та же, но если прохожу по ссылке, генерируемой в стаке, то браузер выдает сообщение:
Streaming clients must specify audio field!
куда тут совать строку с файлом?
...
Рейтинг: 0 / 0
08.08.2017, 11:27
    #39501728
wolfio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
POST запрос через Jsoup
llemingпрогнать запрос через network developer console в браузере и посмотреть где отличия

смущает это одинокое HTTP 1.1 это есть часть параметра lang?
можете чуть поподробнее? в web-е я знаю чуть более, чем ничего, но менее чем в java
...
Рейтинг: 0 / 0
08.08.2017, 11:33
    #39501732
Partisan M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
POST запрос через Jsoup
llemingсмущает это одинокое HTTP 1.1 это есть часть параметра lang?

Это ошибка. В примере приведена командная строка для программы CURL, а не строка HTTP запроса.

wolfio Из-за чего возникает ошибка?

Вам сообщается код HTTP 400. В справке по кодам HTTP видно, что это неправильный формат запроса.
Кроме ошибочного места размещения HTTP/1.1 (правильно в HTTP заголовке), ещё подозрительно начало строки запроса с большой буквы и &key=<<мой ключ к яндексу>>

1. Куда совать в моем варианте запроса коде строку с аудиофайлом?

Что за библиотека Jsoup... оказалась для разбора HTML файлов. В документации к ней посмотреть, как создавать POST запросы, если это возможно. Для них часто используется библиотека Apache HTTP Components. Можно сначала с помощью программы CURL добиться, чтобы операция с POST заработала, потом уж подставлять в свою программу параметры запроса.
...
Рейтинг: 0 / 0
08.08.2017, 12:12
    #39501764
qi_ip
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
POST запрос через Jsoup
Как вариант, можете также попробовать сначала через Postman, а потом okhttp
...
Рейтинг: 0 / 0
08.08.2017, 14:50
    #39501900
Partisan M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
POST запрос через Jsoup
В Jsoup нашлась возможность посылки файла. Как именно - искать в google по словам jsoup post data
...
Рейтинг: 0 / 0
08.08.2017, 15:28
    #39501923
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
POST запрос через Jsoup
wolfio,

Есть у меня подозрения что через Jsoup с пол-пинка не получится. Потому что Jsoup это (внимание!) Java HTML Parser. Ну, нет там всего для работы с HTTP API. Ему достаточно того что умеет браузер. А браузер файлы шлет через multipart POST запросы.
...
Рейтинг: 0 / 0
08.08.2017, 15:50
    #39501931
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
POST запрос через Jsoup
wolfio,

Вообще забавно. Зачем было сюда вообще Jsoup приплетать, если JSE API более чем достаточно?

Вот этот пример близок к тому что вам нужно
https://stackoverflow.com/a/3324964
Только установите свои заголовки и в OutputStream просто скопируйте свой файл. По-моему не нужно ничего кодировать.
...
Рейтинг: 0 / 0
08.08.2017, 15:54
    #39501935
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
POST запрос через Jsoup
Partisan MВ Jsoup нашлась возможность посылки файла. Как именно - искать в google по словам jsoup post data
Вот только файлы туда заряжаются либо POST параметрами, либо в Multipart.
...
Рейтинг: 0 / 0
09.08.2017, 09:49
    #39502341
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
POST запрос через Jsoup
Blazkowiczwolfio,

Есть у меня подозрения что через Jsoup с пол-пинка не получится. Потому что Jsoup это (внимание!) Java HTML Parser. Ну, нет там всего для работы с HTTP API. Ему достаточно того что умеет браузер. А браузер файлы шлет через multipart POST запросы.

Добавили в jsoap а может и было. Смысл видимо в том тчобы можно было парсить не строку а сразу из uri выкачать и распарсить. Правда как это поможет распарсить html парсером wav файл, скачаваемый в данном конкретном примере, и почему не воспользоваться банальным HttpURLConnection если нужно только скачать, непонятно.
...
Рейтинг: 0 / 0
09.08.2017, 10:01
    #39502355
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
POST запрос через Jsoup
llemingДобавили в jsoap а может и было.

Кого добавили? Там есть относительно новый метод rawBody или rawData, но он тоже хочет строку, а не бинарый контент.

llemingСмысл видимо в том тчобы можно было парсить не строку а сразу из uri выкачать и распарсить. Правда как это поможет распарсить html парсером wav файл, скачаваемый в данном конкретном примере, и почему не воспользоваться банальным HttpURLConnection если нужно только скачать, непонятно.
Что-то ты по-моему совсем не вкурил. Тут нет задачи парсить HTML в принципе. Тут вообще HTML-я нет. Нигде. Есть HTTP API для отправки файлов на анализ. Он возвращает XML. Обычный REST сервис. Задлянафига с ним работать через HTML парсер знает только автор вопроса.
...
Рейтинг: 0 / 0
10.08.2017, 10:03
    #39503148
wolfio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
POST запрос через Jsoup
Blazkowicz,
Да просто подумал что возьму Jsoup для скорости, т.к. с ним более менее знако, в отличие от коннекта HTTP. Там в результате парсить то и нечего по большому счету. файл с 3-5 строками.

вопрос потерял актуальность после вопроса, прошу извинить. почитатл про условия использования яндекс сервиса и как-то передумал :\
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / POST запрос через Jsoup / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]