Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

1С vs Exchange

1С vs Exchange
Я
   Pandoch
 
09.04.19 - 16:50
Господа, пытаюсь настроить  интеграцию с Exchange посредством EWS.  Затык на данный момент тупо в попытке отправить запрос http к Ews. Есть опыт у кого нибудь? Есть сервер у клиента exchange, через веб клиент по паролю и логину тестовому подключилась, почту вижу, то есть логин и пароль рабочие.
допустим, адрес сервера Exchange - https://mobile.testserver.com
Пишу такой код:

ssl = Новый ЗащищенноеСоединениеOpenSSL();//т.к. HTTPS
    
    СерверEWS = "mobile.testserver.com";
    Логин = "s1-test@testserver.com";
    Пароль = "Pass";
    Соединение = Новый HTTPСоединение(СерверEWS,443, Логин, Пароль,,20,ssl);
    
    РесурсНаСервере = "/EWS/Exchange.asmx";
    
    Заголовки = Новый Соответствие();
    Заголовки.Вставить("Content-Type", "text/xml;charset=UTF-8");        
    ЗапросHTTP = Новый HTTPЗапрос(РесурсНаСервере,Заголовки);
    
    Результат = Соединение.ОтправитьДляОбработки(ЗапросHTTP);

Хочу получить код ответа 200, не выходит. На данный момент возвращает статус 302. Типа как по другому адресу ресурс лежит. Пробовала из заголовка ответа другой адрес ресурса прописать - все равно 302. Тело ответа пустой, смотрела.  Что с этим 302 делать, подскажите? И если есть у кого примеры/ссылки по работе по Http с EWS - буду признательна!
 
 
   ptiz
 
1 - 09.04.19 - 17:01
(0) ". Пробовала из заголовка ответа другой адрес ресурса прописать - все равно 302" - и что при этом в Location? Туда запрос отправляла?
   Pandoch
 
2 - 09.04.19 - 17:28
(1) да, Location. там прописано было /My.policy. я указывала этот путь к ресурсу. то же самое. Что самое интересное, сейчас попробовала через COM то же самое сделать - вернул 200. Не понимаю, в чем разница. пути те же, причем путь к ресурсу прошел первичный.
   Pandoch
 
3 - 09.04.19 - 17:29
COM - MSXML2.XMLHTTP
   Вафель
 
4 - 09.04.19 - 17:40
302 - это же редирект.
смотри на какой адрес перебрасывает
   Pandoch
 
5 - 09.04.19 - 17:44
(4) да, уже пробую делать второй http запрос с новым именем ресурса. Но все равно в ответе 302
   Вафель
 
6 - 09.04.19 - 17:45
покажи заголовки ответа полностью
   Pandoch
 
7 - 09.04.19 - 17:46
ssl = Новый ЗащищенноеСоединениеOpenSSL();//т.к. HTTPS

    хост = "mobile.test.com/";
    //Логин = "test@test.com";
    Логин = "test@test.com";
    Пароль = "Pass";
    Соединение = Новый HTTPСоединение(хост, 443, Логин, Пароль,,20,ssl,Ложь);
    
    РесурсНаСервере = "/EWS/Exchange.asmx";

    
    Заголовки = Новый Соответствие();
    Заголовки.Вставить("Content-Type", "text/xml;charset=UTF-8");    
    
    ЗапросHTTP = Новый HTTPЗапрос(РесурсНаСервере,Заголовки);

    strXML = "    <?xml version=""1.0"" encoding=""utf-8""?>
   |<soap:Envelope xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"";
   |               xmlns:t=""http://schemas.microsoft.com/exchange/services/2006/types"">;
   |  <soap:Body>
   |    <FindItem xmlns=""http://schemas.microsoft.com/exchange/services/2006/messages"";
   |               xmlns:t=""http://schemas.microsoft.com/exchange/services/2006/types"";
   |    </FindItem>
   |  </soap:Body>
   |</soap:Envelope>
   |";

    ЗапросHTTP.УстановитьТелоИзСтроки(strXML,КодировкаТекста.UTF8);    
    Результат = Соединение.ОтправитьДляОбработки(ЗапросHTTP);
    
    РесурсНаСервере = "/my.policy.asmx";
        
    ЗапросHTTP = Новый HTTPЗапрос(РесурсНаСервере,Заголовки);
    ЗапросHTTP.УстановитьТелоИзСтроки(strXML,КодировкаТекста.UTF8);    
    Результат = Соединение.ОтправитьДляОбработки(ЗапросHTTP);
   Pandoch
 
8 - 09.04.19 - 17:46
это текущий код
   Вафель
 
9 - 09.04.19 - 17:46
заголовки ответа покажи, а не текущий код
   Вафель
 
10 - 09.04.19 - 17:47
а почто вебсервисы не юзаешь?
   Pandoch
 
11 - 09.04.19 - 17:49
   Pandoch
 
12 - 09.04.19 - 17:49
(10) ну тип http говорят тут мне быстрее и надежнее. Я по заданию делаю)
   Вафель
 
13 - 09.04.19 - 17:50
А если так?
 РесурсНаСервере = "/my.policy";
   Вафель
 
14 - 09.04.19 - 17:51
в браузере попробуй адрес забить
   Pandoch
 
15 - 09.04.19 - 17:54
(13) пробовала
   Cyberhawk
 
16 - 09.04.19 - 18:10
Почему ожидается что-то другое?
   Вафель
 
17 - 09.04.19 - 18:14
(16) ну 302 то точно не должно быть. в конечном итоге адрес то верный должно подставить
   Cyberhawk
 
18 - 09.04.19 - 18:22
(17) Я и спрашиваю, почему "302 то точно не должно быть"? Именно оно и должно быть.
   Вафель
 
19 - 09.04.19 - 18:27
(18) почему оно должно быть?
   Cyberhawk
 
20 - 10.04.19 - 08:28
(19) Потому что тямы у поставщика веб-сервиса (EWS) всяко побольше, чем у потребителя
   dezss
 
21 - 10.04.19 - 08:44
Так при редиректе нужно еще и печеньки, которые вернулись, юзать, имхо.
   dezss
 
22 - 10.04.19 - 08:44
(21) + там же сама сессия хранится)
   Pandoch
 
23 - 10.04.19 - 12:11
так, ладно. через ком получила 200. Захотелось хотя бы через ком достать письма. код вот:

strXML = ПолучитьПисьмаСтрокаЗапроса2();

    
    стрURL="https://mobile.test.com/EWS/Exchange.asmx";;

    oXMLHTTP = Новый COMОбъект("MSXML2.XMLHTTP");
    oXMLHTTP.open("POST", стрURL, 0, "test", "Pass");    
    oXMLHTTP.setRequestHeader("Content-Type", "text/xml");    
    
    oXMLHTTP.send(strXML);    
    
    Если oXMLHTTP.Status=200 тогда
        xmlВыборкаMessage = oXMLHTTP.responseXML.SelectNodes("//t:Message");
        Для НомерПисьма = 1 По xmlВыборкаMessage.Length Цикл
            Письмо = xmlВыборкаMessage.item(НомерПисьма - 1);
            Прочитано = Письмо.SelectNodes("t:IsRead").item(0).text;
            Если Прочитано Тогда Продолжить; КонецЕсли;
            Тема = Письмо.SelectNodes("t:Subject").item(0).text;
            ItemId = Письмо.SelectNodes("t:ItemId").item(0);
            Id = ItemId.getAttribute("Id");
            ChangeKey = ItemId.getAttribute("ChangeKey");
            //.........................................
        КонецЦикла;
    КонецЕсли;


Писем нет!! (Length  = 0) хотя сижу на почте тестовой и вижу 5 писем. что не так делаю???
вот сам XML, вроде по стандарту все:

<?xml version="1.0" encoding="utf-8"?>    

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";;    
xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages";;    
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">;;    
<soap:Body>    
    <m:FindItem Traversal="Shallow" xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">;    
        <m:ItemShape>    
            <t:BaseShape>Default</t:BaseShape>    
            <t:AdditionalProperties>    
                  <t:FieldURI FieldURI="item:DateTimeSent"/>    
            </t:AdditionalProperties>    
        </m:ItemShape>    
        <m:IndexedPageItemView MaxEntriesReturned="10" BasePoint="Beginning" Offset="0"/>    
        <m:Restriction>    
            <t:IsEqualTo>    
                <t:FieldURI FieldURI="message:IsRead"/>    
                    <t:FieldURIOrConstant>    
                         <t:Constant Value="false"/>    
                    </t:FieldURIOrConstant>    
            </t:IsEqualTo>    
        </m:Restriction>    
        <m:SortOrder>    
            <t:FieldOrder Order = "Ascending">
                <t:FieldURI FieldURI="item:DateTimeSent"/>    
            </t:FieldOrder>    
        </m:SortOrder>    
<m:ParentFolderIds><t:DistinguishedFolderId Id="inbox"/></m:ParentFolderIds></m:FindItem></soap:Body></soap:Envelope>
   Pandoch
 
24 - 10.04.19 - 12:17
(21) какие печеньки?)
   Mankubus
 
25 - 10.04.19 - 12:50
(0)
у меня вот так работает с одним из сайтов по https:
     ssl = Новый ЗащищенноеСоединениеOpenSSL(
            ,
            Новый СертификатыУдостоверяющихЦентровWindows()); 
(24) https://ru.wikipedia.org/wiki/Cookie
   Pandoch
 
26 - 10.04.19 - 12:54
(25) это весь код?) или мне курить эту статью на вики
   sqr4
 
27 - 10.04.19 - 12:55
(26) Наверно надо добавить Новый СертификатыУдостоверяющихЦентровWindows() в конструктор создания защищенного соединения
   Mankubus
 
28 - 10.04.19 - 15:39
(26) нет не весь это нужно вставить вместо твоей первой строки из (0)
   Pandoch
 
29 - 10.04.19 - 15:47
в общем решение, как обычно слишком просто оказалось... имя сервера надо было немного другое. Я эмпирическим путем чисто обнаружила это. XML и код - рабочие.
   dezss
 
30 - 10.04.19 - 16:51
(24) set-cookie из заголовков ответа.
Но если и без них все обошлось, то хорошо)
 
 Рекламное место пустует
   Pandoch
 
31 - 11.04.19 - 12:09
так, новые сложности возникают) решила тут же продолжить вопросы писать. Получила письмо. Не могудокопаться до тела письма, собственно, т.к. мне нужно загрузить его в 1ску. В документации указано, что в message есть подчинен.элемент Body, но он не приходит в ответе, хотя текст письма есть по факту в аутлуке.
вот так выглядит то, что вернулось:

<?xml version="1.0" encoding="UTF-8"?>

<t:Message xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">;
   <t:ItemId Id="AAAYAHMxY21zLXRlc3RAcGFsZmluZ2VyLmNvbQBGAAAAAADuWzfjPcjrQpqiEAfeoifoBwCWjWwVOsniRo2PfQjTjw5sAAAAyj70AACWjWwVOsniRo2PfQjTjw5sAAAAypOdAAA=" ChangeKey="CQAAABYAAACWjWwVOsniRo2PfQjTjw5sAAAAypyP" />
   <t:ParentFolderId Id="AQAYAHMxY21zLXRlc3RAcGFsZmluZ2VyLmNvbQAuAAAD7ls34z3I60KaohAH3qIn6AEAlo1sFTrJ4kaNj30I048ObAAAAco+9AAAAA==" ChangeKey="AQAAAA==" />
   <t:ItemClass>IPM.Note</t:ItemClass>
   <t:Subject>WARNING ALERT: Fake e-mails / Fraudulent Payment Requests</t:Subject>
   <t:Sensitivity>Normal</t:Sensitivity>
   <t:DateTimeReceived>2019-04-09T15:51:24Z</t:DateTimeReceived>
   <t:Size>10629</t:Size>
   <t:Importance>High</t:Importance>
   <t:IsSubmitted>false</t:IsSubmitted>
   <t:IsDraft>false</t:IsDraft>
   <t:IsFromMe>false</t:IsFromMe>
   <t:IsResend>false</t:IsResend>
   <t:IsUnmodified>true</t:IsUnmodified>
   <t:DateTimeSent>2019-04-09T15:51:10Z</t:DateTimeSent>
   <t:DateTimeCreated>2019-04-09T15:51:24Z</t:DateTimeCreated>
   <t:ReminderIsSet>false</t:ReminderIsSet>
   <t:ReminderMinutesBeforeStart>0</t:ReminderMinutesBeforeStart>
   <t:DisplayCc />
   <t:DisplayTo>DL-PALFINGER-ALL-USERS; DL-PALSYS-ALLUSERS</t:DisplayTo>
   <t:HasAttachments>false</t:HasAttachments>
   <t:Culture>de-DE</t:Culture>
   <t:Sender>
      <t:Mailbox>
         <t:Name>Corp. Communications</t:Name>
      </t:Mailbox>
   </t:Sender>
   <t:IsReadReceiptRequested>false</t:IsReadReceiptRequested>
   <t:IsDeliveryReceiptRequested>false</t:IsDeliveryReceiptRequested>
   <t:ConversationIndex>AdTu65I+E9VtFYjLQGamfIjekWaNMg==</t:ConversationIndex>
   <t:ConversationTopic>WARNING ALERT: Fake e-mails / Fraudulent Payment Requests</t:ConversationTopic>
   <t:From>
      <t:Mailbox>
         <t:Name>Corp. Communications</t:Name>
      </t:Mailbox>
   </t:From>
   <t:InternetMessageId>&lt;DEB70E4F6DD8234E832A7AFE401213A5015AAE8E4B@satsbgexch01.palfinger.local&gt;</t:InternetMessageId>
   <t:IsRead>false</t:IsRead>
   <t:IsResponseRequested>false</t:IsResponseRequested>
</t:Message>

Может другим методом нужно получать содержимое письма? Не FindItem? Кто-то решал подобную задачу?
   Pandoch
 
32 - 11.04.19 - 12:19
попробовала запросить эти свойства, добавив в xml запрос этих полей:
...
 <t:AdditionalProperties>    
                  <t:FieldURI FieldURI="item:DateTimeSent"/>
                    <t:FieldURI FieldURI="item:TextBody" />
                 <t:FieldURI FieldURI="item:Body" />
            </t:AdditionalProperties>    
...

ответ с сервера, типа ошибка запроса..
The request failed schema validation: The 'FieldURI' attribute is invalid - The value 'item:TextBody' is invalid according to its datatype 'http://schemas.microsoft.com/exchange/services/2006/types:UnindexedFieldURIType' - The Enumeration constraint failed.

+

The 'FieldURI' attribute is invalid - The value 'item:TextBody' is invalid according to its datatype 'http://schemas.microsoft.com/exchange/services/2006/types:UnindexedFieldURIType' - The Enumeration constraint failed.

шо не так?(
   Pandoch
 
33 - 11.04.19 - 13:00
через метод GetItem по Айди и Ключу письма получилось.
   Pandoch
 
34 - 15.04.19 - 16:54
Новый вопрос появился)
Изучила все атрибуты Message - нет явного атрибута, содержащего ИД письма - основания, то есть если это входящее письма, в ответ на какое-то наше исходящее, чтобы было ИД письма исходящего, чтобы я их связать смогла.

Кто работал к ексчендж, знаете? Может это отдельной функцией как-то запрашивается по ИД текущего письма?


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.