Имя: Пароль:
1C
1С v8
POST-запрос - как его сделать?
0 PCcomCat
 
19.08.16
14:33
(Из серии "Как страшно жить")

Знаю, здесь есть добрые люди!

Подскажите чайнику, который не работал с REST API (собственно, вообще с интернет-сервисами).

Нужно сделать запрос:
***
POST https://domain/sys/api_login.wcgp
login=admin
password=pass
crm_code=mycrm
crm_token=.......
url=https://crm.ru/crm_integration.php
***
где domain - имя домена,
login - логин администатора ВАТС,
password - пароль администратора ВАТС,
crm_code- идентификатор CRM,
token = токен, с которым ВАТС будет входить в CRM для авторизации запросов
url - url, по которому должна обращаться ВАТС с запросами.


Опубликован интерфейс OData на Apache 2.2.


Пишу в 1с следующее:
*****
    СерверАТС = "xxx.yyy.ru";

    Авторизация = "https://xxx.yyy.ru/sys/api_login.wcgp";;
    
    urlБД = "https://12.123.123.123:8080/mycrm";;
    
    ИмяБазы = "mycrm";

    crm_token = "84ebde7c-7bd3-4e59-9534-e1f76c4ef1cd";
    
    Пользователь = "polzovatel";
    Пароль = "parol";
    
    ТекстЗапроса =
    "POST " + Авторизация + Символы.ПС +
    "login=" + Пользователь + Символы.ПС +
    "password=" + Пароль + Символы.ПС +
    "crm_token=" + crm_token + Символы.ПС +
    "url=" + urlБД;
    
    Сообщить(СокрЛП(ТекстЗапроса));
    
    Сообщить(" ");
    Сообщить(" ******************************************************** ");
    Сообщить(" ");
    
    Соединение = Новый HTTPСоединение(СерверАТС, , Пользователь, Пароль);
    
    ЗаголовокHTTP = Новый Соответствие();
    
    Запрос = Новый HTTPЗапрос(СерверАТСАвторизация, ЗаголовокHTTP);
    
    Запрос.УстановитьТелоИзСтроки(ТекстЗапроса);
    
    ОтветОтСоединения = Соединение.ОтправитьДляОбработки(Запрос);
    
    Ответ = ОтветОтСоединения.ПолучитьТелоКакСтроку("UTF-8");
*****


Так вот в ОтветОтСоединения получаю КодСостояния=404.

Подскажите, я что-то неправильно делаю, и что?
Или не хватает каких-то данных от поставщика услуг? (Может доступ закрыт...)

Заранее благодарю. Это новое для меня направление - не судите строго.
1 PCcomCat
 
19.08.16
14:53
Запрос-то хоть правильно написан?
2 arsik
 
гуру
19.08.16
15:18
В 8.1 пост запрос вот так отправляю. В других версиях хз.

    ВебСоединение = Новый HTTPСоединение(ПараметрыСервера.ИмяСервера,,ПараметрыСервера.Пользователь,ПараметрыСервера.Пароль,Прокси);
    ФайлЗапрос = ПолучитьИмяВременногоФайла();
    ФайлРезультат = ПолучитьИмяВременногоФайла();
    
    стрУРЛ = "";
    пока Выборка.Следующий() Цикл
        стрУРЛ = стрУРЛ+"&region["+СокрЛП(Выборка.Ссылка.УникальныйИдентификатор())+"]=(";
        Для Каждого Координата из Выборка.Ссылка.Координаты ЦИкл
            стрУРЛ = стрУРЛ+"("+Формат(Координата.Широта,"ЧРД=.; ЧРГ=; ЧГ=0")+","+Формат(Координата.Долгота,"ЧРД=.; ЧРГ=; ЧГ=0")+"),";
        КонецЦикла;
        стрУРЛ = Лев(стрУРЛ,СтрДлина(стрУРЛ)-1)+")";
    КонецЦикла;
    
    врТекст = Новый ТекстовыйДокумент;
    врТекст.Вывод = ИспользованиеВывода.Разрешить;
    врТекст.УстановитьТекст(стрУРЛ);
    врТекст.Записать(ФайлЗапрос,КодировкаТекста.UTF8);

    ЗаголовокHTTP = Новый Соответствие();
    ЗаголовокHTTP.Вставить("Accept-Language","ru");
    ЗаголовокHTTP.Вставить("Accept-Charset","utf-8");
    ЗаголовокHTTP.Вставить("Content-Language","ru");
    ЗаголовокHTTP.Вставить("Content-Charset","utf-8");
    ЗаголовокHTTP.Вставить("Content-Type","application/x-www-form-urlencoded");
    //ЗаголовокHTTP.Вставить("Content-Length",Формат(Файл.Размер(),"ЧГ=0"));
    
    Попытка
        ВебСоединение.ОтправитьДляОбработки(ФайлЗапрос,"api/geo/update",ФайлРезультат,ЗаголовокHTTP);
    исключение
        Результат.Ошибка = Истина;
        Результат.ОписаниеОшибки = "Не отправлен пост запрос по причине: "+ОписаниеОшибки();
        Возврат Результат;
    КонецПопытки;
    
    врТекст.Прочитать(ФайлРезультат,КодировкаТекста.UTF8);
3 PCcomCat
 
19.08.16
15:33
В Ответ я получаю следующее:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">;
<html lang="ru" dir="LTR">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title> fe3-dc1-ru.itoolabs.net</title>
    <link rel="stylesheet" href="/SkinFiles/xxx.yyy.ru/Webmail2.yyy.admin/style.css" type="text/css" />
  <meta http-equiv="x-dns-prefetch-control" content="off" />
</head>
<body background="/SkinFiles/xxx.yyy.ru/Webmail2.enforta.admin/bodybgcolor.gif" leftmargin="60" rightmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<form  method="post" enctype="multipart/form-data">
<input type="hidden" name="FormCharset" value="utf-8" />
<table width="100%" border="0" cellspacing="0" cellpadding="0">


<tr><td height="25">&nbsp;</td></tr>

<tr valign="center"><td align="center" bgcolor="#ffcccc" class="externalError">
Запрошенные данные недоступны
<br/>&nbsp;<br/>
файл не найден
</td></tr>

</table>
</form>
</body>
</html>
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший