![]() |
|
v7: Интеграция с ПИК мосрег, непонятная кодировка кириллицы | ☑ | ||
---|---|---|---|---|
0
serpentt
24.06.22
✎
13:16
|
Здравствуйте, может кто-то занимался интеграцией с данным ресурсом?
Проблема в том, что полученный файл ответа(xml, вроде в кодировке utf-8), но вся кириллица значками и знаками вопроса. В поддержке молчат.... Что это может быть? вот пример: <contractExecutions schemaVersion="1.0"> <contractExecution> <id>2708269</id> <publishDate>2022-06-16T08:58:54.000Z</publishDate> <status>1</status> <type>3</type> <contractNumber>2042931</contractNumber> <contractExternalNumber>298751-21</contractExternalNumber> <contractCustomer> <type>1</type> <name>????N?N????°N?N?N????µ???????µ ?±N????¶?µN??????µ ??N???N??µN?N????????°?»N??????µ ???±N??°?·?????°N??µ?»N??????µ N?N?N??µ?¶???µ?????µ ????N???????N??????? ???±?»?°N?N??? A«??N?N???????N??????? N??µN???????N??? ????. ??.??. ??N????°???????°A»</name> <shortName>?????????? ???? A«??N?N???????N??????? N??µN???????N??? ????. ??.??. ??N????°???????°A»</shortName> <INN>5045002624</INN> <KPP>504501001</KPP> |
|||
1
serpentt
24.06.22
✎
14:57
|
АПП
|
|||
2
igork1966
24.06.22
✎
16:53
|
Это уже поломанное. Тольку на него смотреть....
|
|||
3
serpentt
24.06.22
✎
16:58
|
(2) что значит поломанное? так сервер отдает
|
|||
4
igork1966
24.06.22
✎
17:03
|
(2) то что ты сюда вставил явно прошло какое-то преобразование
|
|||
5
Волшебник
24.06.22
✎
17:03
|
Знаки вопроса уже сигнализируют о том, что коды символов пропали и были заменены на вопросы.
Получите нормальный текст. |
|||
6
ДедМорроз
24.06.22
✎
18:01
|
Сокранить полученный ответ в файл сразу в запросе,а после уже смотреть файл и думать.
|
|||
7
big
24.06.22
✎
18:15
|
(6) Просто схранить возможно не получится, ибо кодировка. Надо смотреть. Я у себя для таких ответов при сохранении перекодировку делаю.
7 Опять же - надо знать как ТС получает эту инфу? Каким способом, посредством какого инструмента? |
|||
8
ДедМорроз
24.06.22
✎
19:36
|
(7) объект xmlhttprequest умеет возращать поток байт,который объект AdoDb.Stream умеет записать в файл.
|
|||
9
serpentt
27.06.22
✎
09:49
|
(7) получаю через СоздатьОбъект("WinHttp.WinHttpRequest.5.1") так-же устанавливаю рекомендованные(API) заголовки, но знаки вопроса остаются наместе
|
|||
10
trad
27.06.22
✎
10:16
|
(9) покажи код
|
|||
11
serpentt
27.06.22
✎
10:37
|
(10)
СписокHeader = СоздатьОбъект("СписокЗначений"); СписокHeader.ДобавитьЗначение("1c77","User-Agent"); СписокHeader.ДобавитьЗначение("Bearer "+real_token,"Authorization СписокParam = СоздатьОбъект("СписокЗначений"); СписокParam.ДобавитьЗначение(ДатаВФорматеISO8601(ДатаРазмещения) ,"lastStatusChangeDate"); ОтветHPPT = ОтправитьHTTPЗапрос("GET", "contractExecution/getContractExecutions", "XML",СписокHeader,СписокParam); Функция ОтправитьHTTPЗапрос(metod, spase, shema="XML", RequestHeader, RequestParam="", TypDataRetern=0) ... HTTPЗапрос.Option(2,"utf-8"); HTTPЗапрос.Option(9,2048) TextSend = "https://"+СокрЛП(server)+СокрЛП(server_API)+spase+ПолучитьПараметры(RequestParam); Сообщить(TextSend); HTTPЗапрос.Open(metod, TextSend,False); Для Сч=1 По RequestHeader.РазмерСписка() Цикл НаимПараметр = ""; ЗначПараметр = RequestHeader.ПолучитьЗначение(Сч,НаимПараметр); HTTPЗапрос.SetRequestHeader(НаимПараметр, ЗначПараметр); КонецЦикла; HTTPЗапрос.Send();//ПолучитьСхему(shema) HTTPЗапрос.WaitForResponse(); Если HTTPЗапрос.Status <> 200 Тогда Сообщить("Ошибка запроса авторизации: (" + HTTPЗапрос.Status + ") " + HTTPЗапрос.StatusText+РазделительСтрок+HTTPЗапрос.ResponseText(), "!!"); Возврат "Error"; Иначе Сообщить(HTTPЗапрос.Status); КонецЕсли; Результат = HTTPЗапрос.ResponseText(); а дальше просто сохраняю РЕЗУЛЬТАТ как файл |
|||
12
trad
27.06.22
✎
10:47
|
добавь заголовок
"Content-type", "application/xml; charset=utf-8" |
|||
13
serpentt
27.06.22
✎
10:55
|
(12) нет все также Вот как ругается на открытие XML файла https://transfiles.ru/8633p
а в НотеПаде вообще определяет как еодировка ANSI https://transfiles.ru/92he4 |
|||
14
arsik
гуру
27.06.22
✎
10:59
|
(13) Ну у тебя вот тут все криво читается поди > Результат = HTTPЗапрос.ResponseText();
Тебе нужно результат HTTPЗапрос в бинарник сохранить методами HTTPЗапрос. |
|||
15
serpentt
27.06.22
✎
11:01
|
(14) переделать на xmlhttprequest responseXML
|
|||
16
arsik
гуру
27.06.22
✎
11:11
|
(15) Вот так попробуй
Ответ = HTTPЗапрос.responseStream; Ответ.saveToFile(ПутьКФайлуОтвета); |
|||
17
serpentt
27.06.22
✎
11:21
|
(16)
https://pik.mosreg.ru/v1.0/externalApi/contractExecution/getContractExecutions?lastStatusChangeDate=2022-06-10T23:59:59.000Z 200 Ответ = HTTPЗапрос.responseStream(); {E:\MILKOOPT\PIK_API\1C_ERT\PIK_WORCK.ERT(391)}: Тип переменой не поддерживается |
|||
18
serpentt
27.06.22
✎
11:29
|
Всем спасибо все заработало через Stream.Write WinHttp.responseBody
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |