Имя: Пароль:
IT
Веб-мастеринг
Как в Url наиболее правильно передать массив?
0 Сниф
 
16.12.16
23:26
Например, в запросе http://localhost:3000/item?product=phone&price=200 часть product=phone&price=200 будет представлять параметры запроса - product и price.
А если мы хотим передать табличку?
product1=phone1&price1=200
product2=phone2&price2=300
1 xaozai
 
16.12.16
23:31
XML можно передавать...
SOAP
2 Garykom
 
гуру
16.12.16
23:37
СП куплено?

HTTPСоединение.ОтправитьДляОбработки (HTTPConnection.Post)
HTTPСоединение (HTTPConnection)
ОтправитьДляОбработки (Post)
Синтаксис:

ОтправитьДляОбработки(<HTTPЗапрос>, <ИмяВыходногоФайла>)
Параметры:

<HTTPЗапрос> (обязательный)

Тип: HTTPЗапрос.
HTTP-запрос.
<ИмяВыходногоФайла> (необязательный)

Тип: Строка.
Имя выходного файла, в который записываются полученные с сервера данные.
Если не указан или содержит пустую строку, то тело ответа может быть получено из объекта HTTPОтвет.
Возвращаемое значение:

Тип: HTTPОтвет.

Описание:

Отправляет данные на указанный адрес для обработки при помощи HTTP-запроса POST.

Доступность:

Тонкий клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Пример:

// инициализируем объект для записи XML

ИмяФайлаЗапроса = ПолучитьИмяВременногоФайла();
ОбъектЗапись = Новый ЗаписьXML;
ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML("windows-1251", , Ложь);
ОбъектЗапись.ОткрытьФайл(ИмяФайлаЗапроса, ПараметрыЗаписиXML);
ОбъектЗапись.ЗаписатьОбъявлениеXML();

// выводим корневой элемент Request

ОбъектЗапись.ЗаписатьНачалоЭлемента("Request");

// выводим элемент ClientInfo

ОбъектЗапись.ЗаписатьНачалоЭлемента("ClientInfo");
ОбъектЗапись.ЗаписатьАтрибут("email", АдресОтправителя);
ОбъектЗапись.ЗаписатьКонецЭлемента();

Если ИмяФайлаСертификата <> Неопределено Тогда

    // кодируем в Base64 сертификат

    ДвДанные.Прочитать(ИмяФайлаСертификата);
    ФайлСертификатаBase64 = ДвДанные.ПолучитьСтрокуBase64();
    
    // выводим элемент Certificate

    ОбъектЗапись.ЗаписатьНачалоЭлемента("Certificate");
    ОбъектЗапись.ЗаписатьТекст(ФайлСертификатаBase64);
    ОбъектЗапись.ЗаписатьКонецЭлемента();
    
КонецЕсли;

Если ИмяФайлаЗашифрованногоКонтейнера <> Неопределено Тогда

    // кодируем в Base64 зашифрованный контейнер

    ДвДанные.Прочитать(ИмяФайлаЗашифрованногоКонтейнера);
    ФайлЗашифрованногоКонтейнераBase64 = ДвДанные.ПолучитьСтрокуBase64();
    
    // выводим элемент Data

    ОбъектЗапись.ЗаписатьНачалоЭлемента("Data");
    ОбъектЗапись.ЗаписатьТекст(ФайлЗашифрованногоКонтейнераBase64);
    ОбъектЗапись.ЗаписатьКонецЭлемента();
    
КонецЕсли;

// записываем конец для корневого элемента

ОбъектЗапись.ЗаписатьКонецЭлемента();

ОбъектЗапись.Закрыть();

АдресСервераОнлайнПроверки = "onlinefc.taxcom.ru";
РесурсНаСервере = "/online_fc/online_fc.dll" + ?(ПолучитьСертификат, "?IncludeCertificate", "");

// устанавливаем соединение с сервером

Попытка
    Соединение = Новый HTTPСоединение(АдресСервераОнлайнПроверки, , , , Прокси);
Исключение
    Сообщить("Не удалось установить соединение с сервером онлайн-проверки:"
        + Символы.ПС + ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);
    Возврат;
КонецПопытки;

// посылаем запрос

Попытка
    HTTPЗапрос = Новый HTTPЗапрос(РесурсНаСервере);
    HTTPЗапрос.УстановитьИмяФайлаТела(ИмяФайлаЗапроса);
    Результат  = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
    Соединение = Неопределено;
    Если Результат.КодСостояния > 299 Тогда
       Сообщить("Код состояния " + Результат.КодСостояния + ". Проверка не выполнена");
    КонецЕсли;
Исключение
    Сообщить(ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);
КонецПопытки;
3 Garykom
 
гуру
16.12.16
23:39
(2)+ там пример с файлом в формате xml, можно разные типы в https://ru.wikipedia.org/wiki/Список_MIME-типов
4 Garykom
 
гуру
16.12.16
23:41
(3)+ чаще всего юзают "по умолчанию" https://ru.wikipedia.org/wiki/Multipart/form-data

короче открыть для себя http://www.telerik.com/fiddler
http://its.1c.ru/db/metod8dev/content/5756/hdoc
5 Garykom
 
гуру
16.12.16
23:44
6 Asmody
 
16.12.16
23:51
(0) вот так:
par[0]=a&par[1]=b&par[3]=c
и т.д.

Главное, чтобы на стороне сервера умело разбирать это и превращать в нужную структуру данных
7 Garykom
 
гуру
16.12.16
23:55
(6) Эээ а https://github.com/dreikanter/paradigm.ru/blob/master/posts/2007-12-19_url-max-length.md

Apache: Строго говоря, ограничение длины URL можно менять в конфигурации сервера параметрами LimitRequest*, поэтому все зависит от конкретного случая. Но существуют значения по-умолчанию, которые часто оставляют неизменными. Они лимитируют длину URL (точнее, любой строки HTTP-запроса) значением в 8 килобайт. В более ранних версиях Apache было 4 килобайта.

Microsoft Internet Information Server: По-умолчанию, длина URL ограничена пределом в 16 килобайт. При необходимости, значение можно увеличить. Немного странно, что сервер Microsoft не накладывает столь же жестких ограничений на этот параметр, как и браузер.
8 Garykom
 
гуру
16.12.16
23:56
(7)+ Хотя вопрос то был "как", а не "как правильно" ))
9 Garykom
 
гуру
17.12.16
00:01
(7)+ Хм в большинстве случае не рекомендую более 2Кб GET-ом передавать.
10 Garykom
 
гуру
17.12.16
00:01
(9) *не рекомендуют многие
11 Сниф
 
17.12.16
00:38
(2) 1С тут вообще ни при чем.. Даже не понял смысл ссылки, коллега.

(6) интересно, прямо сейчас начну пробовать
12 Serginio1
 
17.12.16
00:39
http://rsdn.org/forum/design/6620529.1

Можно использовать запрос POST с заголовком
X-HTTP-Method-Override: GET
13 Сниф
 
17.12.16
00:41
(9) Мне более 2Кб и не надо.

(12) Смысл у меня, видимо, именно в Get (видимой юзверю строке) передать табличку на сервер.
14 Garykom
 
гуру
17.12.16
00:45
(13) Почитай про "Кодирование URL" https://ru.wikipedia.org/wiki/URL.

Суть в обычный строковый параметр засовывается что угодно, можно даже бинарники если сначала https://ru.wikipedia.org/wiki/Base64
15 Garykom
 
гуру
17.12.16
00:46
16 Сниф
 
17.12.16
00:49
(14) У меня как раз кризис избытка информации) Я могу в обычный строковый параметр засунуть некий символ, который мой сервер будет принимать как сплиттер и разбивать строку на массив. Осталось выяснить, какой это может быть символ. Так "&" уже зарезервировано, как начало параметра.
17 Garykom
 
гуру
17.12.16
01:04
(16) https://ru.wikipedia.org/wiki/Экранирование_символов

Можно использовать любое сочетание разрешенных символов, которое точно не встречается в твоих "строках".
Например так: "строка1разделительстрока2разделительстрока3разделитель..."
18 Asmody
 
17.12.16
01:05
(16) Что у тебя на стороне сервера?
19 Garykom
 
гуру
17.12.16
01:05
(17)+ классика это используют \символ для экранирования и \\ (удвоение экранирующего символа) для передачи "символа экранирования"

в 1С """" = ?
20 Сниф
 
17.12.16
01:06
(18) У меня нет сервера )) Angular парсит строку и выводит в форме табличку, согласно переданной в Get запросе информации.
21 Garykom
 
гуру
17.12.16
01:07
(20) извини но https://ru.wikipedia.org/wiki/JSON и https://learn.javascript.ru/json :)

ЗЫ вот юморист
22 Сниф
 
17.12.16
01:09
(21) Почему - юморист?
23 Torquader
 
17.12.16
01:10
Массив в запросе GET ?
Вы чего вообще - там же рекомендуется не более 1024 символов, иначе, если у вас есть proxy, то часть Url-а "отрежут за ненадобностью".
В нормальных системах используется метод POST и массивы или объекты пакуются в JsOn.
24 Garykom
 
гуру
17.12.16
01:13
(22) Представь что программист на "Turbo Pascal" начал писать в 1С.
25 Сниф
 
17.12.16
01:17
(24) Ну да, у меня пока кривой ютуб получается ((
http://redis-ka.ru/
26 Garykom
 
гуру
17.12.16
01:23
(25) Точно ничего не нарушаешь в правилах для разработчиков?
А хотя им пофиг они просто для твоего сайта начнут рекламу вставлять в видео и все.
27 Сниф
 
17.12.16
01:29
(26) Точно не нарушаю. Моя реклама справа (например), их реклама прямо в видео. Использую стандарный Youtube Api.
28 Сниф
 
17.12.16
01:32
(26) Первый пока плюс к стандарту - кнопка "<" позволяет один фрагмент просматривать заново.
29 Garykom
 
гуру
17.12.16
01:36
(28) Напиши плиз "детский ютуб", а точнее некую фильтрацию по неким задаваемым признакам.

Чтобы можно было полный ютуб забанить (кроме апи) а твою версию оставить.
30 Сниф
 
17.12.16
01:40
(29) Во, идеи появились. Можно сделать некий tube . Не придумаю домен. А в поддоменах, например, детское.
Про домен вот пока какие мысли:
tubebor.com
ibober.com
tv2017.net
biggitube.com
31 Garykom
 
гуру
17.12.16
01:47
(30) Локализация только РФ или весь мир? Для РФ (и прочих национальных) проще можно транслит придумать не занятый.
32 Garykom
 
гуру
17.12.16
01:55
(30) ну или нечто вроде
itube.su
itube.online

потом если раскрутится или itube.ru может освободится
33 Jija Grenkov
 
17.12.16
02:01
(25) Вы бы по умолчанию, что нить показывали на страничке, к примеру "популярное" из ютуба. И "украдите" откуда-то красный цвет, уже очень ваш вариант красный. И постарайтесь по назначению использовать методы http запросов.
34 Jija Grenkov
 
17.12.16
02:09
(25) так же по ответу ютуба похоже что там уже реализована серверная пагинация. Ютуб возвращает вам 50 результатов на страницу, но на самом деле их может быть на много больше.
35 Сниф
 
20.12.16
20:25
(26) Ты был прав, Garykom. Нарушу, если буду давать рекламу. Почитал внимательнее правила использования youtube api. Примерно так: если на вашем ресурсе ролики ютуб составляют значимую часть (то есть без них ваш ресурс не имеет смысла), то вы не можете на нем размещать коммерческую рекламу, без согласования с Гуглом. Ну и фиг с рекламой, для себя делаю.
36 Сниф
 
20.12.16
20:28
(34) Ютуб действительно возвращает 50 результатов, так как это явно указано в параметре maxResults=50.
37 Сниф
 
20.12.16
20:31
(33) <Вы бы по умолчанию, что нить показывали на страничке>
Основная часть, собственно ради которой и работаю над примером, еще не реализована. Там такая идея: кастомизированный плей-лист с возможностью указать эпизоды из разных видео с временем начала и временем окончания. Например, комплекс фитнесс упражнений, составленный из разных эпизодов различных видеороликов.
38 Garykom
 
гуру
20.12.16
20:56
(37) Хорошая идея, а еще лучше это в виде отдельного API с примерами сделать.

И сделать свое апи чтобы поверх роликов метки (и рисовать) можно было в нужных местах или даже нечто вроде скриптов .avs в https://ru.wikipedia.org/wiki/AviSynth.

Захотел смонтировать нечто из роликов на ютубе и вот тебе готовый онлайн инструмент.
39 Сниф
 
20.12.16
21:04
(38) Я так и делаю. Захотел смонтировать - монтируешь.
Для любого пользователя. На выходе получается URL:
&list=idvideo1,starttime,endtime@idvideo2,starttime,endtime..

Можно передать ссылку другому человеку и если он ее откроет, то у него:
1. сразу начинает играть это плей-лист;
2. есть возможность кастомизировать его и получить на выходе новую ссылку.
При таком варианте на сервере можно вообще не хранить данные пользователей.
40 Garykom
 
гуру
20.12.16
21:08
(39) Это формат указания списка фрагментов из разных видео.
А если к примеру хочется два (и более) видео вместе наложить и проиграть на одном экране?

К примеру вот полезно для видео "схем" разбора ДТП когда одновременно видим синхронизированные видео с нескольких камер/регистраторов и нарисованную схему анимированную.
41 Сниф
 
20.12.16
21:16
(40) Это уже для продвинутых. Рекламу нельзя размещать, я напишу просто "Могу и вам сделать такое же с учетом ваших пожеланий". На русском и на английском.

Два видео я уже делаю, но вот в каком аспекте. Один ролик из плей-листа играет, а следующий уже грузит следующий фрагмент. И когда первый ролик заканчивает, то он становится невидимым, а второй с уже загруженным видео становится видимым. Это чтобы избежать пауз при загрузке. Надеюсь, ты понял, о чем я ) Такая штука уже у меня есть и работает.
42 Сниф
 
20.12.16
21:24
Garykom, а твое пожелание об ограничении контента я помню. Надеюсь сделать это раньше, чем твои дети вырастут :)
43 Garykom
 
гуру
20.12.16
21:26
(42) Боюсь уже поздно, дочке уже 10 лет и она влегкую погуглив обойдет ))
44 Сниф
 
20.12.16
23:05
(43) Дочке можно. Пусть ужаснется. Вот если сын станет извращенцем - это плохо.
45 Сниф
 
21.12.16
01:28
(40) Вот не пойму, что здесь может быть "движком", а что частным случаем. Примеры:
1. Игра "Что? Где? Когда?". Всем нравится, все игры выложены на ютубе, но кто смотрит? Никто. Почему? Игра там, а мы здесь. А можно по мотивам существующего ролика "Что? Где? Когда?" сделать викторину, где принимаешь участие. Игра (видео) разбита на части, идет раунд, появляются  варианты ответов (викторина), можно выбрать из вариантов, прозвучавших во время игры плюс пара левых ответов. По окончании оценить свой уровень;
2. товары. Ко многим товарам есть ублюдочное описание. Максимум - картинки. А тут - западный ролик (пусть на английском) и возможность сразу заказать товар;
3. Какая-нибудь фитнесс-похудейка. Делаешь упражнения - счетчик калорий. Плюс возможность посчитать калории от еды, которые ты скушал за день. Игра получается.