Имя: Пароль:
1C
1С v8
Как получить кэш HTTPСоединения для последующего использования?
0 Vladal
 
18.02.16
09:57
Есть веб-сервис, к которому я подключаюсь и его разработчики дали API:

Соединение = Новый HTTPСоединение(АдресСайта, Порт, Логин, Пароль);
РезультатСоединения = Соединение.Получить(Новый HTTPЗапрос(АдресРесурса + "ConnectToServer?login=" + Логин + "&pass=" + Пароль));
ОтветСервиса = "========== ConnectToServer
|" + РезультатСоединения.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8);
РезультатСоединения = Соединение.Получить(Новый HTTPЗапрос(АдресРесурса + "GetAllObjects?a="));
ОтветСервиса = ОтветСервиса + "
|========== GetAllObjects
|" + РезультатСоединения.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8);

и получаю такой ответ:

========== ConnectToServer
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://gisserver.org/">ok</string&gt;
========== GetAllObjects
System.NullReferenceException: В экземпляре объекта не задана ссылка на объект.
   в FortMonitorWEB3.GisServerService.GetSessionSettings()
   в FortMonitorWEB3.GisServerService.GetAllObjects(String a)


Как я понимаю, когда в get-запрос посылаю запрос на авторизацию, он мне и говорит - ОК, чувак, есть такой логин и пароль (ответ ConnectToServer)
Когда в следующем запросе пытаюсь получить инфу по объектам - он говорит "ты кто такой? я тебя не знаю без ссылки на объект."

Если пишу эти запросы в адресной строке браузера, получаю все необходимые данные.

Обратился к разработчикам этого сервиса, они ответили, что, вероятно, не сохраняется кеш.

Вот где и каким образом этот кеш можно сохранить?
1 Vladal
 
18.02.16
10:02
Прежде работал с другими веб-серверами, те при авторизации возвращали мой ИД сессии, который я уже использовал в дальнейших запросах. Таких проблем не было.
2 sash-ml
 
18.02.16
10:08
cookie
после первой отправки

моикуки =  РезультатСоединения.Заголовки["Set-Cookie"];

//повторная отправка
Заголовки = Новый Соответствие();
Заголовки.Вставить("Cookie", моикуки )


Запрос = Новый HTTPЗапрос(РесурсНаСервере, Заголовки);
Запрос.УстановитьТелоИзСтроки(ТелоЗапроса);
3 Serginio1
 
18.02.16
10:13
(0) Можешь воспользоваться .Net оберткой
Использование классов .Net в 1С для новичков

Наверняка у них есть примеры на C#
4 Vladal
 
18.02.16
11:00
(3) Примеры на странице тестирования API только SOAP, HTTP GET и HTTP POST
(2) Круто! Спасибо, получилось!
6 Serginio1
 
18.02.16
11:29
(4) а WSDL то у них есть раз SOAP
7 Serginio1
 
18.02.16
11:53