|
Как побороть ошибку с объектом WinHttp? | ☑ | ||
---|---|---|---|---|
0
katerinaUniv
15.11.19
✎
11:32
|
Добрый день.
В конфигурации на базе УПП работают два подключения через Comобъект WinHTTP. Один сервис работает исправно, а вот при создании второго выходит сообщение в отладчике, что объект не может быть создан повторно. Я так понимаю, что после работы нужно как-то закрывать такое соединение, но не могу найти как. Помогите, кто знает. |
|||
1
d4rkmesa
15.11.19
✎
11:42
|
(0) Код покажите?
|
|||
2
katerinaUniv
15.11.19
✎
11:47
|
ТекстXML = "<soapenv:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:soap=""https://www.bic.infodebit.md/soap"">
|<soapenv:Header/> |<soapenv:Body> | <soap:infodebit_report soapenv:encodingStyle=""http://schemas.xmlsoap.org/soap/encoding/""> | <idnp xsi:type=""xsd:string"">"+idnp_+"</idnp> | <user xsi:type=""xsd:string"">d_balaur</user> | <pass xsi:type=""xsd:string"">PJvKYkjw2M</pass> | <bicinfo_requested xsi:type=""xsd:integer"">?</bicinfo_requested> | <fisc xsi:type=""xsd:integer"">1</fisc> | <scoring xsi:type=""xsd:integer"">1</scoring> | <call_basis xsi:type=""xsd:string"">"+call_basis_+"</call_basis> | <call_data xsi:type=""xsd:date"">"+call_data_+"</call_data> | <call_reason xsi:type=""xsd:string"">"+call_reason_+"</call_reason> | <credit_amount xsi:type=""xsd:float"">"+credit_amount_+"</credit_amount> | <credit_term xsi:type=""xsd:integer"">"+credit_term_+"</credit_term> | </soap:infodebit_report> |</soapenv:Body> |</soapenv:Envelope>"; Таймаут = 30000; WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1"); WinHttp.SetTimeouts(Таймаут, Таймаут, Таймаут, Таймаут); WinHttp.Option(2,"utf-8"); WinHttp.Open("POST","http://(адрес сайта)/soap/1_report.php?wsdl"); WinHttp.setRequestHeader("Content-Type","text/xml; charset=utf-8"); Попытка WinHttp.Send(ТекстXML); Если WinHttp.Status = 200 Тогда Строка = WinHttp.ResponseText; //Файл = Новый ЗаписьТекста("D:\Задачи\tempxml.xml"); Файл = Новый ЗаписьТекста(КаталогВременныхФайлов()+"tempxml.xml"); Файл.ЗаписатьСтроку(Строка); Файл.Закрыть(); //ПрочитатьXMLфайл(КаталогВременныхФайлов()+"tempxml.xml"); ПрочитатьXMLфайл(Строка); Иначе ЭлементыФормы.Error.Заголовок = "Неверный статус ответа! Проверьте данные."; КонецЕсли; Исключение ЭлементыФормы.Error.Заголовок = "Отправка данных не удалась. Проверьте соединение."; КонецПопытки; |
|||
3
Kigo_Kigo
15.11.19
✎
11:52
|
WinHttp = "";
Не закрывает соеденение? |
|||
4
acht
15.11.19
✎
12:04
|
(2) Приведи полный текст ошибки.
И да: > Файл = Новый ЗаписьТекста(КаталогВременныхФайлов()+"tempxml.xml"); Как ты думаешь, что произойдет, если два пользователя одновременно выполнят этот кусок кода? |
|||
5
DrWatson
15.11.19
✎
12:05
|
Почему люди используют Comобъект WinHTTP вместо нативного HTTPСоединение? ComОбъект лучше, быстрее? Зачем?
|
|||
6
katerinaUniv
15.11.19
✎
12:10
|
Это чужая обработка, с которой я сейчас разбираюсь
|
|||
7
katerinaUniv
15.11.19
✎
12:11
|
(5) использование HTTPСоединения поможет избежать такой проблемы?
|
|||
8
d4rkmesa
15.11.19
✎
12:31
|
(7) Скорее всего, да.
|
|||
9
d4rkmesa
15.11.19
✎
12:32
|
(5) Для совместимости с платформой 8.2, где не поддерживается HTTPS.
|
|||
10
d4rkmesa
15.11.19
✎
12:39
|
(3) Вообще, по идее, даже это не требуется. Хз, может тут какие-то нюансы, ну навроде платформа 64бит, а com-компонента - 32.
|
|||
11
Kigo_Kigo
15.11.19
✎
12:43
|
(10) Может быть после закрытия формы- да, до закрытия скорее всего болтается, а так как там регламент задание, то вообще фиг его знает как себя ведет, по этому можно попробовать принудительно, и да после (3) соеденение может до 30 сек болтаться
|
|||
12
Ёпрст
15.11.19
✎
12:46
|
(5) смотря, какая версия платформы.. мот у него 8.1
|
|||
13
katerinaUniv
15.11.19
✎
15:40
|
(12)у нас 8.2
|
|||
14
DrWatson
15.11.19
✎
15:52
|
Пробовали (8)?
HTTPСоединение доступен, начиная с версии 8.0. |
|||
15
Сияющий в темноте
15.11.19
✎
23:40
|
Есть такой обьект ServerXMLHttpRequest
решает проблемы защищенного соединения и в отличие от тупого обьекта в 1с он асинхронный,то есть можно отправить запрос,а потом в фоне ждать на него ответ,что встроенный обьект HttpСоединение не умеет. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |