Autor Téma: HTTPRIO a EEncodingError  (Přečteno 300 krát)

Offline jd

  • Nováček
  • *
  • Příspěvků: 14
  • Karma: 0
    • Verze Delphi: D6, XE6, Berlin
HTTPRIO a EEncodingError
« kdy: 28-06-2024, 13:50:13 »

Nemáte někdo zkušenost jak nastavit HTTPRIO pro práci s webovými službami IS DMVS (Digitální mapa veřejné správy).
Pokud v odpovědi je i část s
  Content-Type: application/zip
  Content-Transfer-Encoding: binary
tak volání služby končí chybou "No mapping for the Unicode character exists in the target multi-byte code page"
Například služba R9-CtiVysledekEditujDti nebo R24a-CtiVerziJvf

Pokud v odpovědi jsou pouze části s
  Content-Type: application/xop+xml; charset=utf-8; type="text/xml"
tak se chyba neobjeví.

object HTTPRIO1: THTTPRIO
  HTTPWebNode.SecureProtocols = [SSL3, TLS1, TLS11, TLS12, TLS13]
  Converter.Options = [soSendMultiRefObj, soTryAllSchema, soRootRefNodesToBody, soUTF8InHeader, soCacheMimeResponse]
end

Pokud do HTTPRIO1.Converter.Encoding dám UTF-8 nebo nic, tak se to chová stejně.
Pokud do HTTPRIO1.Converter.Encoding dám něco jiného například ANSI, tak to nejde vůbec.

var
  I, O: TRemotable;
begin
  I := CtiVerziJvf.Create;
  with CtiVerziJvf(I) do begin
    Hlavicka := R24aCteniCiselniku_v11.DmvsZadostHlavicka.Create;
    UID := 'E555A197-4C72-4AE5-ABB0-1697881E62F2';
    Data := R24aCteniCiselniku_v11.CtiVerziJvfData.Create;
  end;
  O := WSR24a.ctiVerziJvf(CtiVerziJvf(I)); //zde to skončí na EEncodingError
end;

Testováno v Delphi XE6 a Delphi 11

Děkuji za rady

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3496
  • Karma: 112
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:HTTPRIO a EEncodingError
« Odpověď #1 kdy: 28-06-2024, 14:49:05 »
No evidentne se pokousi konvertovat predany zip na string - proc, to fakt netusim. To by chtelo logy, a prelozit s debug dcu aby bylo jasne kde a proc. Bez projektu ti musi poradit nekdo jiny.
Embarcadero MVP - Czech republic