|   |   | 
| 
 | 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     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |