|
Web-клиент и http-соединение. Как их подружить? | ☑ | ||
---|---|---|---|---|
0
Darchick
09.07.20
✎
15:58
|
Добрый день!
Имею 2 базы. Путь будут пустые. У первой публикую веб-клиент, у второй http сервисы. Обе базы файловые, лежат на одном компе, апач на нем же, платформа 8.3.16.1148 Нужно, чтобы при входе в первую базу через браузер, пользователь нажимал кнопку и получал по http данные из второй базы. (Ситуация смоделирована, задача, конечно, сложнее: нужно по http собрать инфу с 3 баз и выдать ее через веб-клиент пользователю в удобоваримом виде при запуске формы рабочего стола, но для простоты пусть будут две абсолютно пустые базы) В первой базе общая обработка: &НаКлиенте Процедура Тест(Команда) ТестНаСервере(); КонецПроцедуры &НаСервереБезКонтекста Процедура ТестНаСервере() Попытка Чтение = Новый ЧтениеJSON; СерверИсточник = "localhost"; Адрес="/Start/hs/root/RR/"; ПараметрыЗаписи=Новый ПараметрыЗаписиJSON; Запись=Новый ЗаписьJSON; Запись.УстановитьСтроку(ПараметрыЗаписи); Стр=Новый Структура("t","t"); ЗаписатьJSON(Запись,Стр); Данные=Запись.Закрыть(); HTTPЗапрос=Новый HTTPЗапрос(Адрес); HTTPЗапрос.УстановитьТелоИзСтроки(Данные); НТТР = Новый HTTPСоединение(СерверИсточник); НТТРОтвет=НТТР.ОтправитьДляОбработки(HTTPЗапрос); Ответ=Строка(НТТРОтвет.КодСостояния); исключение Ответ=ОписаниеОшибки(); конецпопытки; Сообщить(Ответ); КонецПроцедуры Http-сервис: имя публикации: Start, корневойURL root, ШаблонURL /RR/*, метод POST Функция RRPOST(Запрос) Стр=Новый Структура("Ответ","1"); ПараметрыЗаписи = новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет,,Истина); Запись=Новый ЗаписьJSON; Запись.УстановитьСтроку(ПараметрыЗаписи); ЗаписатьJSON(Запись,Стр); Данные=Запись.Закрыть(); Ответ = Новый HTTPСервисОтвет(200); Ответ.Заголовки.Вставить("Content-type", "application/json; charset=utf-8"); Ответ.УстановитьТелоИзСтроки(Данные); Возврат Ответ; КонецФункции Самый простой сервис, самое простое соединение. В тонком клиенте все выполняется. В веб клиенте спотыкается на строке: НТТРОтвет=НТТР.ОтправитьДляОбработки(HTTPЗапрос); И вываливается с ошибкой: Ошибка при вызове метода контекста (ОтправитьДляОбработки): Ошибка работы с Интернет: Не могу установить соединение НТТРОтвет=НТТРСоединение.ВызватьHTTPМетод("POST",HTTPЗапрос); дает ту же самую ошибку. Может кто подскажет в какую сторону курить? |
|||
1
asady
09.07.20
✎
16:01
|
(0) Юзай
ВебКлиент = ПолучитьCOMОбъект("", "WinHttp.WinHttpRequest.5.1"); ВебКлиент.SetTimeouts(ResolveTimeout, ConnectTimeout, SendTimeout, ReceiveTimeout); ВебКлиент.Open("POST", RequestURL, Ложь); ВебКлиент.SetRequestHeader("Content-Type", "application/json"); ВебКлиент.SetRequestHeader("Accept", "application/json"); |
|||
2
sitex
naïve
09.07.20
✎
16:03
|
(1) а если у него не Виндоус ? тогда приехали
|
|||
3
Garykom
гуру
09.07.20
✎
16:06
|
>В веб клиенте спотыкается на строке:
>НТТРОтвет=НТТР.ОтправитьДляОбработки(HTTPЗапрос); >И вываливается с ошибкой: Хрень какая то оно же в &НаСервереБезКонтекста |
|||
4
Darchick
09.07.20
✎
16:10
|
(3) Так вот и я о том же. Оно же не на клиенте выполняется. Более того уже пыталась фигачить его в серверный общий модуль без вызова. Та же песня
|
|||
5
sitex
naïve
09.07.20
✎
16:17
|
(4) А логи apache смотрел?
|
|||
6
Garykom
гуру
09.07.20
✎
16:21
|
(0) Гм я надеюсь это разные базы?
Т.е. не из той же самой базы к себе запрос? Короче поставь два апача на разных портах |
|||
7
Darchick
09.07.20
✎
16:24
|
(6) Апач один. А можно как-то указать в апаче или в 1с к какой базе по какому порту обращаться?
|
|||
8
Darchick
09.07.20
✎
16:27
|
(5) логи на работе но примерно так: апач обращается к серверу первой базы и все. дальше не идет. Если это тонкий клиент, то обращение идет ко второй базе
|
|||
9
sitex
naïve
09.07.20
✎
16:31
|
(7) Апач то можно настроить на разные порты, а вот 1С не пробовал.
|
|||
10
Darchick
09.07.20
✎
16:56
|
(6) Большущее спасибо за наводку. Раскидала базы на 2 разные машины в одной сети и пошла жара. С нюансами еще надо поразбираться, но главное, что это принципиально может работать.
|
|||
11
Darchick
09.07.20
✎
16:59
|
(1) Уже проходит и с НТТРСоединением и с WinHttp. Но мне понравилось, как WinHttp работает быстро. По сравнению с первым просто летает. Спасибо за хорошую мысль!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |