Имя: Пароль:
1C
1С v8
Parse API из 1С
,
0 pallid
 
16.07.14
10:51
Решил попробовать юзать api сервиса parse.com, нашел пример обрашения к своим функциям на pyton:

import json,httplib
connection = httplib.HTTPSConnection('api.parse.com', 443)
connection.connect()
connection.request('POST', '/1/functions/hello', json.dumps({
     }), {
       "X-Parse-Application-Id": "RTxFlK5FF4i0HpFG2klX0W3LWGoZWtHlgHNr9EBF",
       "X-Parse-REST-API-Key": "ETKk6zQvoUnJnRhkzNyhrw4U9j01yoG2eKKrrgj7",
       "Content-Type": "application/json"
     })
result = json.loads(connection.getresponse().read())
print result

Начал писать что-то похожее на 1с, в результате получилось:

    Подключение = Новый HTTPСоединение("api.parse.com",443);
    
    
    Содержание = Новый Соответствие;
    Содержание.Вставить("X-Parse-Application-Id", "RTxFlK5FF4i0HpFG2klX0W3LWGoZWtHlgHNr9EBF");
    Содержание.Вставить("X-Parse-REST-API-Key","ETKk6zQvoUnJnRhkzNyhrw4U9j01yoG2eKKrrgj7");
    Содержание.Вставить("Content-Type", "application/json");

    
    Запрос = Новый HTTPЗапрос("/1/functions/hello", Содержание);
    
    Файл = Строка(КаталогВременныхФайлов()+"test.txt");
    Подключение.ОтправитьДляОбработки(Запрос, Файл);


Но при запуске процедуры вот такое вот сообщение об ошибке:

{Обработка.Parse.Форма.Форма.Форма(27)}: Ошибка при вызове метода контекста (ОтправитьДляОбработки)
    Подключение.ОтправитьДляОбработки(Запрос, Файл);
по причине:
Ошибка работы с Интернет:   Server returned nothing (no headers, no data)

Можете подсказать куда копать...
1 Maxus43
 
16.07.14
10:53
имхо туда копать http://bit.ly/1jOCmUk
2 pallid
 
16.07.14
11:01
(1) И тебе доброго утра
3 oleg_km
 
16.07.14
11:17
А каким волшебным образом у тебя соответствие преобразуется в JSON?
4 Поpyчик-4
 
16.07.14
12:29
(3) по щучьему веленью.
5 РенеДекарт
 
16.07.14
12:39
(4) ну автор же API применил... оно само от использования таких слов преобразуется куда надо, и отработает как надо ))
6 РенеДекарт
 
16.07.14
12:40
(0) на самом деле, автор, ты не в курсе, что 1с не поддерживает JSON?
7 vhl
 
16.07.14
12:53
(6) Причем тут JSON?
8 pallid
 
16.07.14
13:02
Решил попробовать "Microsoft.XMLHTTP"

ТекстСобытия = "";
     ХТТП = Новый COMОбъект("Microsoft.XMLHTTP");
       ХТТП.Open("POST", "https://api.parse.com/1/functions/hello";, Ложь);
       ХТТП.SetRequestHeader("Host", "api.parse.com");
        ХТТП.SetRequestHeader("Content-Type", "application/json");
       // ХТТП.SetRequestHeader("X-HTTP-Method-Override", "PUT");
        ХТТП.SetRequestHeader("X-Parse-Application-Id", "RTxFlK5FF4i0HpFG2klX0W3LWGoZWtHlgHNr9EBF");
        ХТТП.SetRequestHeader("X-Parse-REST-API-Key","ETKk6zQvoUnJnRhkzNyhrw4U9j01yoG2eKKrrgj7");

        ХТТП.Send(ТекстСобытия);
    
В ответ получаю "{"code":107,"error":"invalid json: "}"
9 Поpyчик-4
 
16.07.14
13:12
(8) Ржунимагу. Ты на сервер-получатель что передаёшь? Данные в каком виде? У 1С нет штатных средств работы с JSON.
10 oleg_km
 
16.07.14
13:30
В (0) жаве у тебя в теле запроса отправляется строка с формате  JSON:

connection.request('POST', '/1/functions/hello', json.dumps({
     }), {
       "X-Parse-Application-Id": "RTxFlK5FF4i0HpFG2klX0W3LWGoZWtHlgHNr9EBF",
       "X-Parse-REST-API-Key": "ETKk6zQvoUnJnRhkzNyhrw4U9j01yoG2eKKrrgj7",
       "Content-Type": "application/json"
     })

а в (8) Ты пытаешься эти данные впихнуть в заголовок HTTP запроса, ты вообще разницу улавливаешь? Может сначала нужно разобраться с протоколом HTTP? Пока как слепой котенок тыкаешься
11 Котокот
 
16.07.14
13:42
(0) Вот в (10) правильно написано. Используй модуль для работы с JSON (переводит структуру в формат JSON, найти можно в инете) и все взлетит.
12 pallid
 
08.08.14
15:49
Вот так получилось:
  
ХТТП = Новый COMОбъект("Microsoft.XMLHTTP");
    ХТТП.Open("get", "https://api.parse.com/1/classes/super";, Ложь);
    ХТТП.SetRequestHeader("Host", "api.parse.com");
    ХТТП.SetRequestHeader("Content-Type", "application/json");
    ХТТП.SetRequestHeader("X-Parse-Application-Id", "RTxFlK5FF4i0HpFG2klX0W3LWGoZWtHlgHNr543F");
    ХТТП.SetRequestHeader("X-Parse-REST-API-Key","ETKk6zQvoUnJnRhkzNyhrw4U9j01yoG2eKKr2434");
    
       Имя = "name";
    ЗначениеИмени = "max";
    
    Текст = Строка("{"+""""+Имя+""""+":"+""""+ЗначениеИмени+""""+"}");
    
    ХТТП.Send();
    Сообщить(ХТТП.Status);
    Сообщить( ХТТП.ResponseText);
13 acsent
 
08.08.14
15:51
для отладки таких штук используй фидлер
14 acsent
 
08.08.14
15:54
попробуй так
Ответ = Подключение.ОтправитьДляОбработки(Запрос)
15 pallid
 
08.08.14
22:32
ХТТП = Новый COMОбъект("Microsoft.XMLHTTP");
    ХТТП.Open("post", "https://api.parse.com/1/classes/super";, Ложь);
    ХТТП.SetRequestHeader("Host", "api.parse.com");
    ХТТП.SetRequestHeader("Content-Type", "application/json");
    ХТТП.SetRequestHeader("X-Parse-Application-Id", "RTxFlK5FF4i0HpFG2klX0W3LWGoZWtHlgHNr543F");
    ХТТП.SetRequestHeader("X-Parse-REST-API-Key","ETKk6zQvoUnJnRhkzNyhrw4U9j01yoG2eKKr2434");
    
       Имя = "name";
    ЗначениеИмени = "max";
    
    Текст = Строка("{"+""""+Имя+""""+":"+""""+ЗначениеИмени+""""+"}");
    
    ХТТП.Send(Текст);
    Сообщить(ХТТП.Status);
    Сообщить( ХТТП.ResponseText);
16 kokamoonga
 
09.08.14
01:58
(15) >>> Текст = Строка("{"+""""+Имя+""""+":"+""""+ЗначениеИмени+""""+"}");

Ну нифига себе, ты написал JSON-парсер для 1С
Ошибка? Это не ошибка, это системная функция.