multimania: Rückgabe in XML

Hallo,

ich bekomme per HTML Aufruf Daten aus einem System gesendet:

http://test.org/daten.html?pushid=1&daten=test

als Rückgabe wird hier xml gefordert.

leider bin ich nicht in der Lage dies als XML auszugeben:

<script type="text/javascript">
function Werteliste (querystring) {
  if (querystring == '') return;
  var wertestring = querystring.slice(1);
  var paare = wertestring.split("&");
  var paar, name, wert;
  for (var i = 0; i < paare.length; i++) {
    paar = paare[i].split("=");
    name = paar[0];
    wert = paar[1];
    name = unescape(name).replace("+", " ");
    wert = unescape(wert).replace("+", " ");
    this[name] = wert;
  }
}
var liste = new Werteliste(location.search);
</script>
<html>
<?xml version="1.0" encoding="UTF-8"?>
<push>
	<pushid>
	<script type="text/javascript">
		document.write(liste.pushid);
	</script>
	</pushid>
	<status>OK</status>
</push>
</html>

eigentlich sollte das dabei rauskommen:

<push>
	<pushid>1</pushid>
	<status>OK</status>
</push>

Leider kommt nur ein

1 OK

dabei raus.

ich hoffe ihr könnt mir dabei helfen.

  1. Hallo multimania,

    eigentlich sollte das dabei rauskommen:

    <push>
    	<pushid>1</pushid>
    	<status>OK</status>
    </push>
    

    Leider kommt nur ein

    1 OK
    

    dabei raus.

    Wenn das einfach so ins HTML kopiert wird, sind das vermutlich die puren Textknoteninhalte. Wenn es nur "optisch" XML sein soll, dann probiere das (ggf. in pre verpackt):

    &lt;push&gt;
      &lt;pushid&gt;Ausgabe&lt;/pushid&gt;
      &lt;status&gt;Ausgabe&lt;/status&gt;
    &lt;/push&gt;
    

    Ansonsten mal erklären, wie hier XML in HTML agieren soll. Vielleicht als XML-Dateninsel (alte IE-Technik)?

    Grüße,
    Thomas

    1. danke für das Feedback.

      Leider steht da nur sehr wenig 😟

      Antworttelegramm Ihres Servers: <push><pushid>335298</pushid><status>OK</status></push> Ausgabe in XML

      1. Hallo multimania,

        Leider steht da nur sehr wenig 😟

        Antworttelegramm Ihres Servers: <push><pushid>335298</pushid><status>OK</status></push> Ausgabe in XML

        Ist doch genau die als gesucht genannte Ausgabe, nur ohne Zeilenumbrüche (<pre>...</pre> könnte helfen).

        Meine Frage war ja, was dieses XML bewirken soll.

        Grüße,
        Thomas

        1. ich habe das jetzt mal so umgebaut, hoffe ich habe das richtig verstanden.

          <?xml version="1.0" encoding="UTF-8"?>
          &lt;push&gt;&lt;pushid&gt;<script type="text/javascript">
          		document.write(liste.pushid);
          	</script>&lt;/pushid&gt;&lt;status&gt;OK&lt;/status&gt;&lt;/push&gt;
          

          Das sieht zwar aus wie ein XML String, jedoch ist mir nicht klar ob das auch wirklich als solcher verarbeitet wird.

  2. Tach!

    ich bekomme per HTML Aufruf Daten aus einem System gesendet:

    http://test.org/daten.html?pushid=1&daten=test

    als Rückgabe wird hier xml gefordert.

    leider bin ich nicht in der Lage dies als XML auszugeben:

    Der Zug ist bereits abgefahren. Du bekommst einen Request, aber deine Antwort ist ein HTML-Dokument mit Javascript drin. Das war's von deiner Seite. Du hast nun keine Möglichkeit mehr, am Ergebnis etwas zu ändern. Der Javascript-Code wird nämlich beim Client ausgeführt, der die eigentliche Anfrage stellte. Jedenfalls falls der überhaupt in der Lage ist, Javascript auszuführen. Das bezweifele ich aber, denn wenn der eigentlich XML haben möchte, ist das wohl eher kein Browser sondern ein anderweitiges Programm.

    Wenn XML als Antwort gefordert ist, muss diese serverseitig generiert werden, und nicht Code zurückgegeben werden, der beim Client auszuführen ist.

    dedlfix.

  3. Hallo multimania,

    könntest Du mal etwas mehr über den Ablauf erzählen, der da passieren soll, und über die beteiligten Systeme?

    Du schreibst, du bekämest Daten aus einem System gesendet und nennst dann eine URL. Ist das die "Sendung"? Dieses andere System ruft auf deinem Server die URL http://test.org/daten.html?pushid=1&daten=test ab? Und du sollst darauf mit einer XML-Antwort reagieren?

    Dann brauchst Du auf dem Server irgendwas, das den Request verarbeitet und XML ausgibt, kein statisches HTML. Da gibt's eine Menge Möglichkeiten - welche ist die von Dir beabsichtigte? Welche Verarbeitung ist überhaupt vorgesehen?

    Wenn Du einen XML Webservice anbieten willst, ist es darüber hinaus auch selten sinnvoll, dies per GET-Request und URL-Parametern zu tun.

    Ein GET sollte idempotent sein, d.h. ein GET verändert den Serverzustand nicht und mehrfacher Aufruf des gleichen GET liefert jedesmal das gleiche Ergebnis (so dass es ok ist, wenn irgendwer auf der Kommunikationskette das Ergebnis in einen Cache legt).

    Wenn Du Daten zur Verarbeitung übergibst, macht man das normalerweise mit einem POST Request, und die zu verarbeitenden Daten werden als body des HTTP Requests übergeben. Man KANN es per GET machen, aber dann muss sichergestellt sein, dass der daten-Parameter nicht allzugroß wird. URLs werden nicht in beliebiger Länge verarbeitet (es gibt kein genormtes Maximum, aber man sollte unter 2KB bleiben, besser unter 0,5KB). Wenn dein Aufrufer auf GET und URL-Parameter besteht - ok - aber dann kläre ihn über die Restriktionen auf.

    Wie gedenkst Du die serverseitige Verarbeitung des HTTP Requests auszuführen?

    Rolf

    --
    sumpsi - posui - clusi