Senden eines JSON an mein JAVA Programm

jackcarver12

Grünschnabel
Hallo,
ich habe zu diesem Thema bereits einen Thread ausgearbeitet. Da war das Projekt allerdings noch nicht so weit fortgeschritten wie bisher.
Einige Dinge sind neu und andere Teile des Projekts wurden obsolet.

Hier ist nochmal der Code. Ich habe mich beim schreiben des Codes an dieser Stelle etwas beeilt, damit ich schnell erkenne wo ich Hilfe brauche bzw. wo ich an meine Wissensgrenzen stoße.
Hier der HTML-Code:
HTML:
<html>
    <header>
        <link href="standard.css" rel="stylesheet"/>
        <script language="javascript" type="text/javascript" src="rechenscript.js"></script>


        <title>
            Cocktailseite
        </title>

    </header>
    <body>
        <!--
        DropDown
    -->

    <nav>
      <ul>
        <li><a href="#" title="Nach Hause">Home</a></li>
        <li class="submenu"><a href="#" title="nix">Regeln</a>
          <ul>

                <li><a href="#" title="Ihr Inventar">Spielregeln</a></li>
                <li><a href="#" title="Unsere Auswahl">Verhaltensregeln</a></li>

            </li>

          </ul>
        </li>
        <li><a href="#" title="Ueber uns">Shop</a></li>
        <li><a href="#" title="So erreichen Sie uns">Logout</a></li>

      </ul>
    </nav>
<div class:"Banner">
    <img src="Banner.jpg" />
</div>
<h2>Unsere Cocktails </h2>

<form name="liste">
    <ul class="Getraenkeliste">
        <li class="auflistung">Cuba Libre<input type="checkbox" name="CubaLibre" id="getrank1" value="6.80" onclick="calcPrice()" class="getraenk"> </li>
        <li class="auflistung">Sex on the Beach<input type="checkbox" name="SexOnTheBeach" id="getrank1" value="7.20" onclick="calcPrice()" class="getraenk"></li>
        <li class="auflistung">Caipirinha<input type="checkbox" name="Caipirinha" id="getrank1" value="7.50" onclick="calcPrice()" class="getraenk"></li>
        <li class="auflistung">Mochito<input type="checkbox" name="Mochito" id="getrank1" value="8.00" onclick="calcPrice()" class="getraenk"></li>
        <li class="auflistung">Apple Teenie<input type="checkbox" name="AppleTeenie" id="getrank1" value="8.20" onclick="calcPrice()" class="getraenk"></li>
        <li class="auflistung">Old Pesces<input type="checkbox" name="OldPesces" id="getrank1" value="9.00" onclick="calcPrice()" class="getraenk"></li>
        <li class="auflistung">Tropic Thunder<input type="checkbox" name="TropicThunder" id="getrank1" value="8.40" onclick="calcPrice()" class="getraenk"></li>
    </ul>
</form>
    <div id="preisfeld">
        <p>0.00</p>
    </div>
    <input type="submit" name="Bestellbutton" value="Bestellen" onclick="bestellung()">




</html>

Javascript:
var summe=0.0;
var i;


function calcPrice()
{
  var betrag=0.0;
  var betragf=0.0;
  var gecheckteBoxen=[];
  var gecheckteBox;
  var endsumme=0.0;


  for(i=0;i<document.liste.length;i++)
  {
    if(document.liste.elements[i].checked)
    {
      /*rechnung*/
      gecheckteBox = document.liste.elements[i].name;
      String(gecheckteBox);
      /*namen speichern*/
      betrag = document.liste.elements[i].value;
      /*betrag speichern*/
      Number(betrag);
      Number(summe);
      summe=parseFloat(summe) + parseFloat(betrag);

    }/*ende if*/
  }/*ende for*/
/*Ausgabe*/
  var element = document.getElementById("preisfeld");

  if(summe===0)
  {
    element.innerHTML = "0.00"+"&#8364;";
  }
  else {
    parseFloat(summe);
    summe.toFixed(2);/* warum funktioniert das nicht*/
    var summeS=String(summe);
    /*Ausgabe */
    element.innerHTML = String(summe)+ "0" + "&#8364;"; //0 wird angefügt, weil toFixed() nicht funktioniert

    endsumme=summe;
    summe=0;
    betrag=0;
    betragf=0;
  }
  return endsumme;
}



function bestellung()
{
  var preisDerBox;
  var preisDerBoxen=[];
  var bestellung=[];
  var endsumme=0.0;
  var name;
  var k=0;
  let object;
  var sendeObjekt;

  endsumme=calcPrice();

for(i=0;i<document.liste.length;i++)
  {
    if(document.liste.elements[i].checked)
    {
      /*rechnung*/
      gecheckteBox = document.liste.elements[i].name;
      bestellung.push(gecheckteBox);
      preisDerBox = document.liste.elements[i].value;
      parseFloat(preisDerBox);
      preisDerBoxen.push(preisDerBox);



     bestellungJSON = {name: bestellung , preis: preisDerBoxen ,gesamtpreis: endsumme};

     object = JSON.stringify(bestellungJSON);
     sendeObjekt = JSON.parse(object);

    // bestellungsListe.push({name: gecheckteBox, preis: preisDerBox})
     //JSON erstellen
     //let json = JSON.stringify(bestellung);
    }/*ende if*/
  }/*ende for*/


  /* bestellung speichert alle namen */
  /*endsumme speichert den Preis */
}
/* maybe....
function sendJSON()
{

  var xhr = new XMLHttpRequest();
  var url = "url";
    xhr.open("POST", url, true);
    xhr.setRequestHeader("Content-Type", "application/json");
    xhr.onreadystatechange = function ()
    {
        if (xhr.readyState === 4 && xhr.status === 200)
        {
            var json = JSON.parse(xhr.responseText);
            console.log(json.email + ", " + json.password);
          }
    };
var data = JSON.stringify({"email": "hey@mail.com", "password": "101010"});
xhr.send(data);
        }
}
*/


window.addEventListener("load", calcPrice());

Das ist der Code meiner WebAnwendung.
Hier ist das Problem, dass ich noch einen Weg finden muss die JSON-Daten an mein JAVA-Programm zu übermitteln.

Hier der Code meiner Java-Anwendung:
Java:
package bk;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
import java.nio.charset.Charset;

import org.json.JSONException;
import org.json.JSONObject;

public class JsonReader {

  private static String readAll(Reader rd) throws IOException {
    StringBuilder sb = new StringBuilder();
    int cp;
    while ((cp = rd.read()) != -1) {
      sb.append((char) cp);
    }
    return sb.toString();
  }

  public static JSONObject readJsonFromUrl(String url) throws IOException, JSONException {
    InputStream is = new URL(url).openStream();
    try {
      BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
      String jsonText = readAll(rd);
      JSONObject json = new JSONObject(jsonText);
      return json;
    } finally {
      is.close();
    }
  }

  public static void main(String[] args) throws IOException, JSONException {
    JSONObject json = readJsonFromUrl("https://swapi.co/api/people/1/");
    System.out.println(json.toString());
    System.out.println(json.get("id"));
  }
}

Hier wird ein JSON über die URL gecatcht.
Funktionsweise in Java verstehe ich. Aber was ich nicht verstehe ist, wie ich den JSON für mein Programm verfügbar machen soll.....
An der Stelle bin ich mir nicht mehr sicher ob der Code für mein Programm so funktioniert.

Daher habe ich mir beim Recherchieren eine zweite Codequelle näher angesehen.
Dabei wird ein Webserver in Java erstellt.

Java:
package Zetcode;

import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class GetRequestJava11
{

   
        // TODO Auto-generated method stub
        public static void main(String[] args) throws IOException, InterruptedException {

            HttpClient client = HttpClient.newHttpClient(); //GetRequest
            HttpRequest request = HttpRequest.newBuilder() //neuen http Client erzeugen
                    .uri(URI.create("http://webcode.me"))//über die Factory
                    .build();

            HttpResponse<String> response = client.send(request,
                    HttpResponse.BodyHandlers.ofString());

            System.out.println(response.body()); //gibt den body der Webseite aus
        }
   

}
Zum WebCode:
HTML listet einfach nur auf welche Getränke ich auf meiner Webseite habe. Der JS Code rechnet aus was die Bestellung kostet etc. pp.

Mein Ziel ist es wie schon gesagt das JSON von meinem JAVASCRIPT zu meinem JAVA Programm zu schaffen.
Wie ist mir momentan eigentlich relativ egal. Ich bin für JEDEN Vorschlag dankbar und hoffe auf möglichst viele Beiträge von Leuten, die bereits mehr Erfahrung mit der Thematik Web->Java gemacht haben als ich.

LG J
 
Zurück