Имя: Пароль:
1C
1С v8
Загрузка контрагентов из 1с в ammo crm
0 Zakella86
 
02.06.17
19:21
Добрый день форумчане . Нужен совет гуру. Стоит задача загрузки контрагентов из 1с  в ammo crm череp http запрос. Формат json. В общем я затестил их api вроде все ок.
http://radikal.ru/lfp/s018.radikal.ru/i528/1706/26/e73c943a3a9b.png/htm
теперь пишу такой же запрос http в 1с
http://radikal.ru/lfp/s019.radikal.ru/i633/1706/df/024905201412.png/htm
но выходит код ошибки 301.
http://radikal.ru/lfp/s42.radikal.ru/i096/1706/ef/b925177909fe.png/htm
Это что то связанное с перемещением сервера.

Что я сделал не так?
1 Zakella86
 
02.06.17
19:23
первая картинка плоха видна
http://radikal.ru/lfp/s019.radikal.ru/i635/1706/83/563739c28451.png/htm
2 Zakella86
 
02.06.17
19:36
все вопрос решил
вот верный код, возвращает теперь ответ 400.
Заголовки = Новый Соответствие();

Заголовки.Вставить("Host:", "new590c1f3d3ac3b.amocrm.ru");
Заголовки.Вставить("Content-Length", "1");
Заголовки.Вставить("X-Target-URI", "https://new590c1f3d3ac3b.amocrm.ru";);
Заголовки.Вставить("Connection", "Keep-Alive");
Заголовки.Вставить("Content-Type", "text/plain; charset=UTF-8");


HTTPСоединение = новый HTTPСоединение("new590c1f3d3ac3b.amocrm.ru");;
HTTPЗапрос = Новый HTTPЗапрос("/private/api/v2/json/contacts/set?USER_HASH=0e2bdd0bae2807a29efacf0c6535166a&[email protected]",Заголовки);
HTTPОтвет  = HTTPСоединение.Получить(HTTPЗапрос);
Объект.Ответ= HTTPОтвет.ПолучитьТелоКакСтроку();
Теперь вопрос, как вставить туда вложение в виде json. Саму структуру я написал
3 Zakella86
 
02.06.17
19:39
запрос POST
4 Неверный Параметр И
 
02.06.17
19:46
Это что то связанное с перемещением сервера [x]

Читаешь свою же тему формат JSON в версии 8.3.7
Потом читаешь СП.
Правда несложно?
5 Неверный Параметр И
 
02.06.17
19:48
И да, .Получить - это Get
6 Zakella86
 
02.06.17
19:53
json у меня уже есть.
Как его правильно отправить?
У меня кстати код ошибки 400 теперь. Но это нормально, api так отвечает когда ему не нравится тело запроса. Но я взял точный их пример. Как правильно отправить post запрос с json в качестве body&
7 Неверный Параметр И
 
02.06.17
19:53
И на первом скриншоте у тебя https
А ты ломишься по http
Неудивительно, что сервер у тебя перемещается.
8 Неверный Параметр И
 
02.06.17
19:56
Ну, я бы посмотрел в СП какие методы ещё можно использовать для отправки.
Но это же так скучно...
9 Zakella86
 
02.06.17
20:01
есть метод HTTP.ОтправитьДляОбработки , один из его параметров ресурс. В данном случаи https://new590c1f3d3ac3b.amocrm.ru/private/api/v2/json/contacts/set
ресурс это  private?
10 Zakella86
 
02.06.17
20:29
в общем пробую такой метод, выдает ошибку



Сервер = "new590c1f3d3ac3b.amocrm.ru";
Ресурс = "/private/api/v2/json/contacts/set?USER_HASH=0e2bdd0bae2807a29efacf0c6535166a&[email protected]";
HTTP = новый HTTPСоединение(Сервер,,,,,Истина);
//HTTP =  Новый HTTPСоединение(Сервер,443);
ФайлЗапроса = ПолучитьИмяВременногоФайла();
ТекстовыйФайл = Новый ТекстовыйДокумент;
ТекстовыйФайл.УстановитьТекст("&text=" + Стр);
ТекстовыйФайл.Записать(ФайлЗапроса, КодировкаТекста.UTF8);
ФайлРезультата = ПолучитьИмяВременногоФайла();
Заголовки = Новый Соответствие();
Заголовки.Вставить("Host:", "new590c1f3d3ac3b.amocrm.ru");
Заголовки.Вставить("Content-Length", "1");
Заголовки.Вставить("X-Target-URI", "https://new590c1f3d3ac3b.amocrm.ru";);
Заголовки.Вставить("Connection", "Keep-Alive");
Заголовки.Вставить("Content-Type", "text/plain; charset=UTF-8");

HTTP.ОтправитьДляОбработки(ФайлЗапроса, Ресурс, ФайлРезультата, Заголовки);
Ответ = Новый ТекстовыйДокумент();
Ответ.Прочитать(ФайлРезультата, КодировкаТекста.UTF8);
Объект.Ответ = Ответ.ПолучитьТекст();
//УдалитьФайлы(ФайлЗапроса);
УдалитьФайлы(ФайлРезультата);
***********************************************

{ВнешняяОбработка.ParceJson.Форма.Форма.Форма(148)}: Ошибка при вызове метода контекста (ОтправитьДляОбработки)
HTTP.ОтправитьДляОбработки(ФайлЗапроса, Ресурс, ФайлРезультата, Заголовки);
по причине:
Ошибка при выполнении файловой операции  '/private/api/v2/json/contacts/set?USER_HASH=0e2bdd0bae2807a29efacf0c6535166a&[email protected]'
по причине:
Ошибка работы с Интернет:  Ошибка доступа к ресурсу. Путь не найден:  (400). <html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx</center>
</body>
</html>

по причине:
Ошибка работы с Интернет:  Ошибка доступа к ресурсу. Путь не найден:  (400)
11 Garykom
 
гуру
02.06.17
20:49
Ресурс = "/private/api/v2/json/contacts/set";

А
USER_HASH=0e2bdd0bae2807a29efacf0c6535166a
[email protected]
засунь в тело
12 Zakella86
 
02.06.17
20:53
не очень понял, это куда в тело?
13 Garykom
 
гуру
02.06.17
20:53
в твоем случае в теле передаются заголовки в них засунь
14 Zakella86
 
02.06.17
20:56
Заголовки.Вставить("USER_HASH","0e2bdd0bae2807a29efacf0c6535166a");
Заголовки.Вставить("USER_LOGIN","[email protected]");
так что ли? я не очень понимаю просто
15 Garykom
 
гуру
02.06.17
21:44
(14) И что пишет на это?
16 Zakella86
 
02.06.17
21:46
тоже самое
Ошибка работы с Интернет:  Ошибка доступа к ресурсу. Путь не найден:  (400)
17 Zakella86
 
05.06.17
21:16
в общем разобрался. Выкладываю код , рад помочь кому то
Рабочий я проверял.
Текст = Новый ЧтениеТекста("C:\Users\User\Desktop\amo crm\jsonПример.txt", КодировкаТекста.UTF8);
    Стр = Текст.Прочитать();
    
    
    HTTPСоединение = Новый HTTPСоединение("new590c1f3d3ac3b.amocrm.ru",,,,,,Новый ЗащищенноеСоединениеOpenSSL,Истина);
    HTTPЗапрос = Новый HTTPЗапрос("/private/api/v2/json/contacts/set?USER_HASH=0e2bdd0bae2807a29efacf0c6535166a&[email protected]");
    HTTPЗапрос.УстановитьТелоИзСтроки(стр,КодировкаТекста.UTF8,ИспользованиеByteOrderMark.НеИспользовать);
    ИмяФайлаОтвета = ПолучитьИмяВременногоФайла("txt");
    HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос, ИмяФайлаОтвета);  
    
    Текст = Новый ЧтениеТекста(ИмяФайлаОтвета, КодировкаТекста.UTF8);
    Объект.Ответ = Текст.Прочитать();