Имя: Пароль:
1C
1С v8
Помогите с передачей параметров методом POST
0 nd33
 
15.01.14
17:50
Добрый день. Возникла проблема с процедурой ОтправитьДляОбработки(). Были испробованы методы как с Источником, так и с http запросом. Все впустую. Необходимо получить данные от сервера: https://pro.subscribe.ru/api/?apiversion=100&json=1&request.id=777&request={"action":"ping";} . Через браузер все отлично считывается.

Спасибо за помощь.
1 Apokalipsec
 
15.01.14
17:58
2 sikuda
 
15.01.14
18:10
ОтправитьДляОбработки это post запрос, а у тебя описан get. Это просто Получить.
3 nd33
 
15.01.14
23:01
Пробовал по-разному, и так как советуете Вы.

Вот пример кода:
    Сервер = "https://pro.subscribe.ru/";;
    Ресурс = "/api/";
    HTTP =  Новый HTTPСоединение(Сервер);
    ФайлЗапроса = ПолучитьИмяВременногоФайла();
    ТекстовыйФайл = Новый ТекстовыйДокумент;
             ТекстовыйФайл.УстановитьТекст("&apiversion=100&json=1&request.id=777&request={""action"" : ""ping""}");
    ТекстовыйФайл.Записать(ФайлЗапроса, КодировкаТекста.UTF8);
    ФайлРезультата = ПолучитьИмяВременногоФайла();
    ЗаголовокHTTP = Новый Соответствие();
    ЗаголовокHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded");
    ЗаголовокHTTP.Вставить("Accept-Language", "ru");
    ЗаголовокHTTP.Вставить("Accept-Charset", "utf-8");
    ЗаголовокHTTP.Вставить("Content-Language", "ru");
    ЗаголовокHTTP.Вставить("Content-Charset", "utf-8");
    HTTP.ОтправитьДляОбработки(ФайлЗапроса, Ресурс, ФайлРезультата, ЗаголовокHTTP);
    Ответ = Новый ТекстовыйДокумент();
    Ответ.Прочитать(ФайлРезультата, КодировкаТекста.UTF8);
    ТекстОтвета = Ответ.ПолучитьТекст();
    УдалитьФайлы(ФайлЗапроса);
    УдалитьФайлы(ФайлРезультата);


И ошибка:{Форма.Форма.Форма(18)}: Ошибка при вызове метода контекста (ОтправитьДляОбработки)
    HTTP.ОтправитьДляОбработки(ФайлЗапроса, Ресурс, ФайлРезультата, ЗаголовокHTTP);
по причине:
Ошибка работы с Интернет:  Couldn't resolve host name
4 Asmody
 
15.01.14
23:33
(3) https из имени сервера убери. И читай в СП про параметры HTTPСоединения, там написано, как https делать
5 nd33
 
16.01.14
10:13
(4) Попробовал, как Вы советовали, выдает ошибку SSL connector error

Далее попытался через WinHTTP, при вызове Send ошибка Произошла исключительная ситуация (WinHttp.WinHttpRequest): Соединение с сервером было неожиданно прервано
6 Asmody
 
16.01.14
10:45
(5) как в конструкторе HTTPСоединение определены параметры SSL?
7 nd33
 
16.01.14
11:07
(6) При указании 443 порта, выдает другую ошибку
Ошибка работы с Интернет:  Couldn't connect to server
8 Asmody
 
16.01.14
13:53
(7) не надо указывать порт. надо открыть синтаксис-помощник, найти раздел HTTPСоединение и внимательно прочитать до конца
9 nd33
 
16.01.14
14:12
(8) Прочитал я все до конца, с защищенным ssl соединением тоже пробовал. Вот код:

    ssl=Новый ЗащищенноеСоединениеOpenSSL();
    Сервер = "pro.subscribe.ru";
    Ресурс = "/api";
    HTTP =  Новый HTTPСоединение(Сервер,,,,,0,ssl);
    ФайлЗапроса = ПолучитьИмяВременногоФайла();
    ТекстовыйФайл = Новый ТекстовыйДокумент;
    ТекстовыйФайл.УстановитьТекст("?apiversion=100&json=1&request.id=777&request={""action"" : ""ping""}");
    ТекстовыйФайл.Записать(ФайлЗапроса, КодировкаТекста.UTF8);
    ФайлРезультата = ПолучитьИмяВременногоФайла();
    ЗаголовокHTTP = Новый Соответствие();
    ЗаголовокHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded");
    ЗаголовокHTTP.Вставить("Accept-Language", "ru");
    ЗаголовокHTTP.Вставить("Accept-Charset", "utf-8");
    ЗаголовокHTTP.Вставить("Content-Language", "ru");
    ЗаголовокHTTP.Вставить("Content-Charset", "utf-8");
    HTTP.ОтправитьДляОбработки(ФайлЗапроса, Ресурс, ФайлРезультата, ЗаголовокHTTP);
    Ответ = Новый ТекстовыйДокумент();
    Ответ.Прочитать(ФайлРезультата, КодировкаТекста.UTF8);
    ТекстОтвета = Ответ.ПолучитьТекст();
    УдалитьФайлы(ФайлЗапроса);
    УдалитьФайлы(ФайлРезультата);

Ошибка указана выше, что я делаю не так?
10 Asmody
 
16.01.14
14:16
попробуй
ssl=Новый ЗащищенноеСоединениеOpenSSL(
   Неопределено,
   Новый СертификатыУдостоверяющихЦентровWindows()
);