|
1С vs Exchange | ☑ | ||
---|---|---|---|---|
0
Pandoch
09.04.19
✎
16:50
|
Господа, пытаюсь настроить интеграцию с Exchange посредством EWS. Затык на данный момент тупо в попытке отправить запрос http к Ews. Есть опыт у кого нибудь? Есть сервер у клиента exchange, через веб клиент по паролю и логину тестовому подключилась, почту вижу, то есть логин и пароль рабочие.
допустим, адрес сервера Exchange - https://mobile.testserver.com Пишу такой код: ssl = Новый ЗащищенноеСоединениеOpenSSL();//т.к. HTTPS СерверEWS = "mobile.testserver.com"; Логин = "[email protected]"; Пароль = "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 - буду признательна! |
|||
1
ptiz
09.04.19
✎
17:01
|
(0) ". Пробовала из заголовка ответа другой адрес ресурса прописать - все равно 302" - и что при этом в Location? Туда запрос отправляла?
|
|||
2
Pandoch
09.04.19
✎
17:28
|
(1) да, Location. там прописано было /My.policy. я указывала этот путь к ресурсу. то же самое. Что самое интересное, сейчас попробовала через COM то же самое сделать - вернул 200. Не понимаю, в чем разница. пути те же, причем путь к ресурсу прошел первичный.
|
|||
3
Pandoch
09.04.19
✎
17:29
|
COM - MSXML2.XMLHTTP
|
|||
4
Вафель
09.04.19
✎
17:40
|
302 - это же редирект.
смотри на какой адрес перебрасывает |
|||
5
Pandoch
09.04.19
✎
17:44
|
(4) да, уже пробую делать второй http запрос с новым именем ресурса. Но все равно в ответе 302
|
|||
6
Вафель
09.04.19
✎
17:45
|
покажи заголовки ответа полностью
|
|||
7
Pandoch
09.04.19
✎
17:46
|
ssl = Новый ЗащищенноеСоединениеOpenSSL();//т.к. HTTPS
хост = "mobile.test.com/"; //Логин = "[email protected]"; Логин = "[email protected]"; Пароль = "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); |
|||
8
Pandoch
09.04.19
✎
17:46
|
это текущий код
|
|||
9
Вафель
09.04.19
✎
17:46
|
заголовки ответа покажи, а не текущий код
|
|||
10
Вафель
09.04.19
✎
17:47
|
а почто вебсервисы не юзаешь?
|
|||
11
Pandoch
09.04.19
✎
17:49
|
||||
12
Pandoch
09.04.19
✎
17:49
|
(10) ну тип http говорят тут мне быстрее и надежнее. Я по заданию делаю)
|
|||
13
Вафель
09.04.19
✎
17:50
|
А если так?
РесурсНаСервере = "/my.policy"; |
|||
14
Вафель
09.04.19
✎
17:51
|
в браузере попробуй адрес забить
|
|||
15
Pandoch
09.04.19
✎
17:54
|
(13) пробовала
|
|||
16
Cyberhawk
09.04.19
✎
18:10
|
Почему ожидается что-то другое?
|
|||
17
Вафель
09.04.19
✎
18:14
|
(16) ну 302 то точно не должно быть. в конечном итоге адрес то верный должно подставить
|
|||
18
Cyberhawk
09.04.19
✎
18:22
|
(17) Я и спрашиваю, почему "302 то точно не должно быть"? Именно оно и должно быть.
|
|||
19
Вафель
09.04.19
✎
18:27
|
(18) почему оно должно быть?
|
|||
20
Cyberhawk
10.04.19
✎
08:28
|
(19) Потому что тямы у поставщика веб-сервиса (EWS) всяко побольше, чем у потребителя
|
|||
21
dezss
10.04.19
✎
08:44
|
Так при редиректе нужно еще и печеньки, которые вернулись, юзать, имхо.
|
|||
22
dezss
10.04.19
✎
08:44
|
(21) + там же сама сессия хранится)
|
|||
23
Pandoch
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> |
|||
24
Pandoch
10.04.19
✎
12:17
|
(21) какие печеньки?)
|
|||
25
Mankubus
10.04.19
✎
12:50
|
(0)
у меня вот так работает с одним из сайтов по https: ssl = Новый ЗащищенноеСоединениеOpenSSL( , Новый СертификатыУдостоверяющихЦентровWindows()); (24) https://ru.wikipedia.org/wiki/Cookie |
|||
26
Pandoch
10.04.19
✎
12:54
|
(25) это весь код?) или мне курить эту статью на вики
|
|||
27
sqr4
10.04.19
✎
12:55
|
(26) Наверно надо добавить Новый СертификатыУдостоверяющихЦентровWindows() в конструктор создания защищенного соединения
|
|||
28
Mankubus
10.04.19
✎
15:39
|
(26) нет не весь это нужно вставить вместо твоей первой строки из (0)
|
|||
29
Pandoch
10.04.19
✎
15:47
|
в общем решение, как обычно слишком просто оказалось... имя сервера надо было немного другое. Я эмпирическим путем чисто обнаружила это. XML и код - рабочие.
|
|||
30
dezss
10.04.19
✎
16:51
|
(24) set-cookie из заголовков ответа.
Но если и без них все обошлось, то хорошо) |
|||
31
Pandoch
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><DEB70E4F6DD8234E832A7AFE401213A5015AAE8E4B@satsbgexch01.palfinger.local></t:InternetMessageId> <t:IsRead>false</t:IsRead> <t:IsResponseRequested>false</t:IsResponseRequested> </t:Message> Может другим методом нужно получать содержимое письма? Не FindItem? Кто-то решал подобную задачу? |
|||
32
Pandoch
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. шо не так?( |
|||
33
Pandoch
11.04.19
✎
13:00
|
через метод GetItem по Айди и Ключу письма получилось.
|
|||
34
Pandoch
15.04.19
✎
16:54
|
Новый вопрос появился)
Изучила все атрибуты Message - нет явного атрибута, содержащего ИД письма - основания, то есть если это входящее письма, в ответ на какое-то наше исходящее, чтобы было ИД письма исходящего, чтобы я их связать смогла. Кто работал к ексчендж, знаете? Может это отдельной функцией как-то запрашивается по ИД текущего письма? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |