hmm: C++ <-> WebService

Hi Leute,

ich hab ein Java Servlet, dass ich derzeit per JavaScript (ServerEvent) ansprechen kann. Jetzt möchte ich dieses Java Servlet auch über C++ ansprechen können.

Habt ihr nen Links oder paar Stichworte die erklären wie man das machen könnte? Ich habe vor einem Jahr einen C++ Code geschrieben der einen PHP Webserivice per SOAP angesprochen hat, aber kann ich SOAP zum ansprechen eines Java Servlets verwenden?

mfg Hmm

  1. Moin!

    Hi Leute,

    ich hab ein Java Servlet, dass ich derzeit per JavaScript (ServerEvent) ansprechen kann. Jetzt möchte ich dieses Java Servlet auch über C++ ansprechen können.

    Habt ihr nen Links oder paar Stichworte die erklären wie man das machen könnte? Ich habe vor einem Jahr einen C++ Code geschrieben der einen PHP Webserivice per SOAP angesprochen hat, aber kann ich SOAP zum ansprechen eines Java Servlets verwenden?

    Es lohnt sich nur dann, SOAP zu verwenden, wenn das Java-Servlet SOAP implementiert hat. Wenn es derzeit via Javascript angesprochen wird, ist das sehr sehr unwahrscheinlich.

    Das einfachste wird sein, du ermittelst anhand des Javascript-Codes, welche HTTP-Requests ausgetauscht werden, und bindest in C++ einen passenden HTTP-Client ein, der mit denselben Requests arbeitet und dieselben Daten entgegennehmen dürfte. Diese dann in einer für C++ passende Datenstruktur umzuwandeln wäre der letzte Schritt.

    Grüße Sven

    1. Danke!

      mein javascript code sieht wie folgt aus:

      <!DOCTYPE HTML>
      <html>
      
      <head>
      <title>Server-Sent Events PF Servlet</title>
      <style>
      body {
      	font-family: sans-serif;
      }
      </style>
      </head>
      <body>
      
      <form method="POST" action="PortfolioServlet">
      Param: <input name="param" type="text">  </input>
      </form>
      	
      
      		Symbole: <span id="foo"></span> 
      		<br></br>
      		<button onclick="start()">Start</button>
      		<script>
      			function start() {
      				var eventSource = new EventSource(
      						'http://localhost:8080/main-0.0.1-SNAPSHOT/PortfolioServlet');
      				eventSource.onmessage = function(event) {
      					document.getElementById('foo').innerHTML = event.data;
      				};
      			}
      		</script>
      
      
      
      </body>
      </html>
      

      wie baue ich mir in C++ einen analogen request? bzw. gibt es irgendwo einen link dazu?

      "http://localhost:8080/main-0.0.1-SNAPSHOT/PortfolioServlet" gibt einen json string zurück. leider habe ich keine idee welches C++ Object "EventSource" ersetzen kann

      1. Moin!

        mein javascript code sieht wie folgt aus:

        <form method="POST" action="PortfolioServlet">
        Param: <input name="param" type="text">  </input>
        </form>
        <button onclick="start()">Start</button>
        Symbole: <span id="foo"></span>
        <script>
        function start() {
            var eventSource = new EventSource(
                'http://localhost:8080/main-0.0.1-SNAPSHOT/PortfolioServlet'
            );
            eventSource.onmessage = function(event) {
                document.getElementById('foo').innerHTML = event.data;
            };
        }
        </script>
        

        wie baue ich mir in C++ einen analogen request? bzw. gibt es irgendwo einen link dazu?

        Du suchst einen Websocket-Client für C++. Den willst du mutmaßlich nicht selbst entwickeln, denn außer dem eröffnenden Protokoll-Handshake ist da kein HTTP drin. Ich hab das RFC6455 nur mal gerade überflogen.

        Das heißt auch, dass da definitiv kein SOAP und auch kein simples JSON-REST zu finden ist.

        Grüße Sven

      2. "http://localhost:8080/main-0.0.1-SNAPSHOT/PortfolioServlet" gibt einen json string zurück. leider habe ich keine idee welches C++ Object "EventSource" ersetzen kann

        Das Stichwort lautet abstrakter Datentyp. Json ist nur eine Sequenz, Bytefolge, Datei... das muss deserialisiert werden, so dass Du am Ende wahlfreien Zugriff auf die in JSON verpackten Daten bekommst. Und dieser wahlfreie Zugriff (Random Access) wird gewöhnlich über Abstrakte Datentypen (struct, array, hash, verkettete Liste...) realisiert, die sich im Hauptspeicher befinden.

        Natürlich kann ein abstrakter Datentyp auch in einem Objekt gekapselt sein. In diesem Fall wird der wahlfreie Zugriff über Methoden realisiert, die mit dem Objekt aufzurufen sind.

        Also: Jetzt weißt Du, wonach Du suchen möchtest.