ThomasA320: XML request

Hallo, ich weiß nicht, ob ich in diesem Forum überhaupt richtig bin.......

Ich habe eine URL https:/qq/ss.de. Wenn ich einen request senden will, kann ich den an die URL anhängen als daten&daten&daten etc.

Ich muss nun aber eine xml Datei als request senden - leider habe ich überhaupt keine Ahnung und also auch keinen Plan, wie ich das hinkriegen kann.

Für einen Tipp / Lösungsweg wäre ich sehr froh.

Gruß aus Hamburg

Thomas

  1. Allgemein: XML wird im HTTP Message Body gesendet. Der Content-Type ist hierzu im gleichnamigen HTTP Request Header zu senden, ebenfalls der Header Content-Length. I.d.R. ist dann die Request-Method ein POST.

    Tip im Besonderen: Befrage die Spezifikation zur Schnittstelle welche Parameter für den Request erforderlich sind. MfG

  2. Hallo ThomasA320,

    aus welchem Kontext heraus willst Du das denn tun? PHP, Javascript, andere Sprache?

    Ansonsten kann man über den Hinweis von pl hinaus, dass Du in dem Fall einen POST statt einen GET Request machen musst, wenig sagen.

    Es sei denn, der Betreiber der URL hat noch sachdienliche Hinweise für Dich (qq/ss.de gips ja nun nicht, deutlicher wäre https://example.org/ss.de gewesen, der Name ist für sowas reserviert).

    Rolf

    1. hi Namensvetter,

      Ansonsten kann man über den Hinweis von pl hinaus, dass Du in dem Fall einen POST statt einen GET Request machen musst, wenig sagen.

      Vielleicht noch das hier: Wie die Requestmethode genannt wird ist nebensächlich. Entscheidend dafür, dass serverseitig der HTTP Message Body gelesen wird, ist der Request Header Content-Length mit der exakten Längenangabe (Anzahl bytes) für den Message Body. So stehts jedenfalls im RFC 2616

      The presence of a message-body in a request is signaled by the inclusion of a Content-Length or Transfer-Encoding header field in the request's message-headers.

      If a request contains a message-body and a Content-Length is not given, the server SHOULD respond with 400 (bad request) if it cannot determine the length of the message, or with 411 (length required) if it wishes to insist on receiving a valid Content-Length.

      Ob jedoch in der Praxis alle Webserver in diesem Sinne konfiguriert sind ist eine andere Frage. Es gibt Webserver da draußen die geben sich auch mit einer Request Method ZITRONE zufrieden.

      A message-body MUST NOT be included in a request if the specification of the request method (section 5.1.1) does not allow sending an entity-body in requests.

      Das heißt, es gibt Webserver die lesen auch bei Request Method GET oder ASDF den Message Body mit der in Content-Length angegeben Anzahl an Bytes.

      Auf deutsch gesagt gibt es Webserver die RFC 2616 allenfalls als Prosa betrachten. Da kann sich jeder Webmaster/Provider mal selwer prüfen viel Spaß dabei 😉

      1. Hallo pl,

        du hast natürlich recht, HTTP Verben sind erweiterbar und wenn ich unbedingt einen ROLF Request machen will, steht mir das frei.

        Allerdings haben GET und POST eine definierte Semantik, die gemäß RfC 2616 vom Server entsprechend zu implemntieren ist, und die auch Einfluss auf Caches o.Ä. hat. Selbst erfundene Verben haben keine Semantik und machen damit ggf. mehr Arbeit.

        Was man noch erwähnen sollte: je nach Semantik des vom OP beabsichtigten Requests könnte auch PUT die richtige Methode sein (Speichern der XML-Datei unter dieser Ressourcenangabe).

        Rolf

        --
        Dosen sind silbern
        1. Hi,

          Selbst erfundene Verben haben keine Semantik und machen damit ggf. mehr Arbeit.

          Kommt darauf an, was serverseitig verfügbar ist. Die HTTP Implementierung des bekannten Perl Moduls CGI.pm (seit einiger Zeit nicht mehr in Core) war jedenfalls alles andere als RFC gerecht.

          Wichtig ist eigenlich nur, unabhängig von der Requestmethode, den Header Content-Length abzufragen und dort ein sinnvolles Limit zu setzen womit ein nachgelagerter Prozess sofort abbricht.

          MfG