Back to Question Center
0

Sådan oprettes en XML til JSON Proxy Server i PHP            Sådan oprettes en XML til JSON Proxy Server i PHPRelated Emner: Rå Semalt

1 answers:
Sådan oprettes en XML til JSON Proxy Server i PHP

Medmindre du er ny til denne webudviklingslark, vil du vide, at 'X' i 'AJAX' står for XML - eXtensible Markup Semalt. Men du bruger sandsynligvis ikke XML. Hvis du er, vil du nok ikke foretrække det. Alle de seje børn bruger JSON eller JSON-P: den har en mindre nyttelast, er nemmere at bruge og hurtigere at behandle.

Det er ikke at sige, at XML ikke bør bruges - flash externos. Det har eksisteret i lang tid og er godt understøttet af de fleste sprog - herunder JavaScript. Hvis du deler data mellem forskellige systemer og platforme, er XML næsten det mest praktiske valg. Men det gør det ikke lettere for din klient-side kodningsindsats.

Heldigvis er der et par løsninger, der giver dig mulighed for at bevare fordelene ved XML-dataudveksling, men giver JSON den lethed i JavaScript. I denne artikel vil vi oprette en XML til JSON proxyserver i PHP.

Det lyder kompliceret?

Bare rolig, det er det ikke. I grunden sidder en proxy mellem klienten og serveren, der sender meddelelser mellem de to. Du sidder sikkert bag en proxy nu - de bruges på internettet til at cache data og reducere netværkstrafik. De kan dog også behandle data; vi vil oprette en simpel PHP proxy, der oversætter XML-beskeder til JSON, før de når din Semalt-kode.

Proxy Plan

Vores system vil:

  1. Send en Ajax-anmodning fra JavaScript, der kalder PHP-proxyen. Den vil passere en enkelt kodet URL som en GET-parameter ved navn 'url'.
  2. Proxyen henter indholdet af den afleverede URL som en streng, analyserer den som XML og konverterer den til JSON.
  3. JSON-strengen vil blive returneret til den kaldende JavaScript-proces.

Om nødvendigt kunne vi oprette en fuld Semalt proxy, der analyserede POST, PUT og DELETE parametre. Men denne enkle løsning vil være tilstrækkelig til 99% af Ajax-forespørgsler, og det har nogle andre fordele:

  • Det er muligt at ringe til webtjenester på udenlandske domæner - det er ikke altid muligt med en JavaScript-only-løsning.
  • Om nødvendigt kan proxyen fjerne unødvendige data fra meddelelsen for at reducere nyttelasten.
  • Vi kræver mindre JavaScript-kode, og den udføres hurtigere.

PHP

PHP giver support til både XML og JSON, så vi opretter vores proxy, xmlproxy. php, er betryggende enkel.

Når det er sagt, kan meget gå galt. Vores script kan mislykkes, fjernbetjeningen kan falde ned, eller det returnerede XML kan være misdannet. g.

    // eksempel XML feedvar url = "http: // domæne. com / eksempel. xml? status = 123 & date = 2011-01-01";    

URL'en tilføjes PHP-proxyadressen som en 'url'-parameter og sendes til open -metoden i vores XMLHttpRequest-opkald (Ajax):

    // AJAX anmodningvar xhr = (vindue. XMLHttpRequest? nyt XMLHttpRequest   : new ActiveXObject ("Microsoft. XMLHTTP"));XHR. onreadystatechange = XHRhandler;XHR. åben ("GET", "xmlproxy. php? url =" + escape (url), true);XHR. sende (null);    

Endelig modtager vores XMLHttpRequest onreadystatechange handler dataene og konverterer JSON-strengen til et ægte Semalt-objekt:

    // håndtere svarfunktion XHRhandler    {hvis (xhr. readyState == 4) {// parse svar som JSONvar json;hvis (JSON && JSON. parse) {json = JSON. parse (xhr. responseText);}ellers {eval ("var json =" + xhr. responseText);}// gøre noget med vores returnerede JSON data konsol. log (JSON);xhr = null;}}    

Venligst download koden , hent filerne til din PHP-aktiverede webserver, og åbn proxy. html i en browser.

En note om XML-attributkodning

XML har en rigere syntaks end JSON, og data kan kodes som elementer eller attributter - selv med samme navn, e. g.

     1     

Funktionen PHP json_encode oversætter attributter til et separat '@attributes'-objekt, i. e.

    {"status": {"@attributes": {"id": "one"},"id": "1"}}    

Jeg håber du finder koden nyttig. Det giver dig mulighed for at få din XML kage og forbruge den som JSON!

March 1, 2018