Oznámení

Provoz fóra byl ukončen

Texy! XML-RPC Service

před 13 lety

zsery
Člen | 5

Zkouším použít Texy! XML-RPC Service pomocí MSXML2.DOMDocument.3.0. Při zaslání stringu s HTML značkami je mi vrácen string jakoby HTMLencoded, uvozovky – hodnoty parametrů jsou převedeny na první uvozovka dole druhá nahoře ‚‘ a celé je to zavřené do XHTML tagu p, string po HTML dekódování obsahuje HTML kód.

Díky za odpověď.

před 13 lety

David Grudl
Nette Core | 6806

Raději jsem XML/RPC službu upravil – nyní je jako vstupní i výstupní formát podporován pouze typ base64. Posílej tedy text v tomto formátu a vyhneš se všem problémům.

před 13 lety

zsery
Člen | 5

Poslal jsem uplně stejný, ale teď již převedený html formátovaný text jako base64 a nyní se mi již vrátil pouze base64 kódovaný string
<!-- generated by Texy! -->

zde jsou vstupní data :

(smazáno, dgx)

díky za pomoc

před 13 lety

zsery
Člen | 5

vypadl text , který jsem zadal na druhém řádku, zadávám jej tedy v původní base64 podobě :
„CjwhLS0gZ2VuZXJhdGVkIGJ5IFRleHkhIC0tPg==“
tedy :
< ! – – generated by Texy! – – >
snad se to již nesmaže

před 13 lety

David Grudl
Nette Core | 6806

Nejsem schopen ten text dekódovat. XMLRPC server (zatím) využívá poslabších knihoven PEAR a ty v případě neúspěchu při dekódování namísto chyby vrátí prázdný řetězec. Proto tedy nebylo nic ani na výstupu.

Otázkou je, proč text nemůžu dekódovat. Zkuste schválně zakódovat něco kratšího, třeba ‚Texy!‘ ⇒ ‚VGV4eSE=‘

před 13 lety

zsery
Člen | 5

Text je zdroj ze souboru http://www.razdva.cz/…/oldHTML.HTM zakódovaný funkcí javascriptu encode64, zdroj této funkce je na http://www.razdva.cz/zsery/base64.js a je tam i funkce na dekódování decode64. Stejný text enenkódovaný jsem posílal jako dříve jako UTF-8 string.

Zkusil jsem poslat
<H1><A href=„javascript“>Ahoj ěčšřčžřýž</a></H1>
encode64 to je
PEgxPjxBIGhyZWY9ImphdmFzY3JpcHQiPkFob2ogw1hQ1+f1+PC9hPjwvSDE+
a vrátilo se mi
CjxwPiZsdDtIMSZndDs8YSBocmVmPSJqYXZhc2NyaXB0Ij5BaG9qIMNYUNfn9fjwvYT48L0gxDwvYT48L3A+Cgo8IS0tIGdlbmVyYXRlZCBieSBUZXh5ISAtLT4=
HTML encodované a decode64

<p><H1><a href=\"javascript\“>Ahoj ÃXP×çõøð½„øð½ Ä</a></p>

< ! – – generated by Texy! -->"

H1 je zvláštně zpracováno, encodováno a ztratil se zakočovací tag, čeština také zmizela

Funkce javascriptu by měly korenktní, poraďte prosím. Díky.

před 13 lety

David Grudl
Nette Core | 6806

Ta funkce encode64() určitě nemůže fungovat dobře pro znaky mimo rozsah ASCII. Tedy chtělo by to řetězec v UTF-8 převést na řetězec bajtů.

Zkus před encode64() zavolat na řetězec tuhle funkci (snad je to dobře).

function utf8_to_binary(utftext)
{ //dgx
    var c, i, binary="";

    for (i=0; i<utftext.length; i++)
    {
        c=utftext.charCodeAt(i);

        if (c<128)
            binary += String.fromCharCode(c);
        else if (c>127 && c<2048) {
            binary += String.fromCharCode((c>>6)+192);
            binary += String.fromCharCode((c&63)+128);
        } else {
            binary += String.fromCharCode((c>>12)+224);
            binary += String.fromCharCode(((c>>6)&63)+128);
            binary += String.fromCharCode((c&63)+128);
        }
    }
    return binary;
}

před 13 lety

David Grudl
Nette Core | 6806

Další věc je dekódování. Nejprve tedy proveď decode64() a potom ještě zavolej tuto reverzní funkci (opět doufám, že tam nejsou chyby):

function binary_to_utf8(binary)
{ //dgx
    var c, c2, c3, i=0, utftext="";

    while (i<binary.length)
    {
        c = binary.charCodeAt(i++);
        if (c<128) {
            utftext += String.fromCharCode(c);
        } else if (c>191 && c<224) {
            c2 = binary.charCodeAt(i++);
            utftext += String.fromCharCode(((c&31)<<6)|(c2&63));
        } else {
            c2 = binary.charCodeAt(i++);
            c3 = binary.charCodeAt(i++);
            utftext += String.fromCharCode(((c&15)<<12)|((c2&63)<<6)|(c3&63));
        }
    }
    return utftext;
}

před 13 lety

zsery
Člen | 5

Nejdříve dík, již dostávám návratovou hodnotu. V návratových datech je v různých místech vkládána entita & shy ; a dále se opět opakuje původní problém uvozovky – hodnoty parametrů jsou převedeny na první uvozovka dole druhá nahoře ‚‘ . TAké jsem mysle, že se text přeformátuje do XHTML, ale vrací se v původní podobě. není třeba nastavit nějaký xml atribut vůči default?

před 13 lety

David Grudl
Nette Core | 6806

Vkládání entity &shy; je korektní chování Texy. Pokud jde o tagy a atributy, zdá se, že nejsou povolené – tedy potřeboval bych vědět, s jakými parametry přesně službu voláte.