Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Caché Новый топик    Ответить
 Получить JSON из URL  [new]
Sabyrov.Talgat
Member

Откуда:
Сообщений: 264
по некому URL можем получить JSON,
{
	"data":[ {
			"Id":14
		}, {
			"Id":74
		}
	]
}


мне нужно использовать эти данные через COS(Cache Object Script).

в C# это делается так :
using (WebClient wc = new WebClient())
{
   var json = wc.DownloadString("url");
}


Затем нужно сделать парсинг в %ZEN.ProxyObject
Прошу помочь!
3 мар 17, 09:00    [20259348]     Ответить | Цитировать Сообщить модератору
 Re: Получить JSON из URL  [new]
kolesov
Member

Откуда: Владивосток
Сообщений: 707
Sabyrov.Talgat,

	s httprequest=##class(%Net.HttpRequest).%New()
	s httprequest.Server="www.kolesov.ru"
	s sc = httprequest.Get("/ships/?param=trampampam")
	s resp = ""
	f {
		q:httprequest.HttpResponse.Data.AtEnd
		s resp = resp_httprequest.HttpResponse.Data.Read()
	}
	d ##class(%ZEN.Auxiliary.jsonProvider).%ConvertJSONToObject(resp,"%ZEN.proxyObject",.obj)

Ну а с obj уже делаем, что хотим
3 мар 17, 10:44    [20259617]     Ответить | Цитировать Сообщить модератору
 Re: Получить JSON из URL  [new]
Sabyrov.Talgat
Member

Откуда:
Сообщений: 264
kolesov,

Благодарю, все работает!
3 мар 17, 11:13    [20259733]     Ответить | Цитировать Сообщить модератору
 Re: Получить JSON из URL  [new]
kolesov
Member

Откуда: Владивосток
Сообщений: 707
Sabyrov.Talgat,

Странно, но мой код кто-то поправил о_О - причем кто-то с довольно пуританскими взглядами на программирование ;)

А чем bigbrains-то не понравилось, инквизиторы?
3 мар 17, 11:56    [20259894]     Ответить | Цитировать Сообщить модератору
 Re: Получить JSON из URL  [new]
Sabyrov.Talgat
Member

Откуда:
Сообщений: 264
Здесь еще одна проблема появилась.
Дело в том что мои HTTP запросы ооооочень долгие, они выполняются где то 30-40 мин.
Но когда делают HTTP запрос с помощью каше, он выполняет быстро и не выдает ошибки.

Прошу помочь!
6 мар 17, 10:04    [20265866]     Ответить | Цитировать Сообщить модератору
 Re: Получить JSON из URL  [new]
Блок А.Н.
Member

Откуда: Новосибирск
Сообщений: 3452
Вы не опечатались? 30-40 минут? Вы что-то неправильно делаете.
А Каше за какое время отваливается? Там есть таймаут
s httprequest.Timeout=3600
, но так делать нехорошо.
Лучше запускать асинхронный процесс на сервере, откуда получаете данные, и проверять время от времени, выполнился ли запрос.
6 мар 17, 11:30    [20266252]     Ответить | Цитировать Сообщить модератору
 Re: Получить JSON из URL  [new]
Sabyrov.Talgat
Member

Откуда:
Сообщений: 264
Происходит некое вычисление, он сделан на другом языке, и для его запуска пришлось сделать его в виде API сервиса.
А результат этот нужно получить в некую переменную в COS
6 мар 17, 11:40    [20266319]     Ответить | Цитировать Сообщить модератору
 Re: Получить JSON из URL  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12772
Sabyrov.Talgat
Дело в том что мои HTTP запросы ооооочень долгие, они выполняются где то 30-40 мин.

Такого не должно быть в принципе...

Как уже писалось выше
Блок А.Н.
Лучше запускать асинхронный процесс на сервере, откуда получаете данные, и проверять время от времени, выполнился ли запрос.

Sabyrov.Talgat
он сделан на другом языке, и для его запуска пришлось сделать его в виде API сервиса.
А результат этот нужно получить в некую переменную в COS

Это абсолютно не важно.
Общение клиента с сервером должно быть коротким, если это не чтение данных или их передача.
6 мар 17, 14:07    [20266953]     Ответить | Цитировать Сообщить модератору
 Re: Получить JSON из URL  [new]
Sabyrov.Talgat
Member

Откуда:
Сообщений: 264
Программа запускается в терминале.
В запускаемом методе есть такой код:

s httprequest=##class(%Net.HttpRequest).%New()
s sc = httprequest.Get("http://localhost/api/values")

Но метод успешно доходит до конца, но только за короткое время и без значение Response (httprequest.HttpResponse.Data.Read() - пустой, хотя должно быть значение), а сервис http://localhost/api/values продолжает выполняется.

Нужно сделать какую нибудь задержку в терминале до выполнения сервиса http://localhost/api/values .
Прошу помочь!
7 мар 17, 08:05    [20269433]     Ответить | Цитировать Сообщить модератору
 Re: Получить JSON из URL  [new]
Блок А.Н.
Member

Откуда: Новосибирск
Сообщений: 3452
Sabyrov.Talgat,

ну вы хоть бы ответы читали ...
7 мар 17, 13:39    [20270957]     Ответить | Цитировать Сообщить модератору
 Re: Получить JSON из URL  [new]
Sabyrov.Talgat
Member

Откуда:
Сообщений: 264
Блок А.Н.,
Спасибо! Разобрался)))
9 мар 17, 07:37    [20276216]     Ответить | Цитировать Сообщить модератору
Все форумы / Caché Ответить