ich weiß nicht ob ich im richtigen Bereich dieses Forums bin, wenn nicht, würde ich mich freuen wenn die Admins meinen Beitrag gegebenenfalls verschieben =)
Hallo Leute, würde mich erstmal kurz vorstellen.
Bin 22 Jahre alt und studiere im moment Informatik im vierten Semester.
Bis jetzt keine Erfahrungen mit Netwerkgeschichten oder Java, dennoch gibt es nun eine kleine Praktikumsaufgabe die wir erledigen müssen, einen "Webservice" zu entwickeln der es ermöglicht, virtuelle Warenkörbe zu verwalten.
Auf Client Seite dürfen wir die Klasse HTTPUrlConnection verwenden, auf Server Seite nicht.
Soweit so gut.
Nach einigen ( ne menge ) Tagen programmieren, testen, und :bahnhof:
wollte ich mal hier nachfragen wo der Fehler liegt.
Der Client schickt 12 Anfragen zum Server, und dieser soll dementsprechend Antworten.
Ich habe auf Server Seite die erste Anfrage "bearbeitet" und die if Bedingung dafür programmiert, was er bei dieser tun soll.
Mein erstes Erfolgserlebnis hier, Es funktionierte :toll:
Daraufhin natürlich gleich an die nächsten Bedingungen gesetzt, damit alle Anfragen beantwortet werden können.
Alles ausprogrammiert, getestet und hier kommt das Problem:noe::
Keine der Anfragen wird richtig beantwortet, weder die restlichen 11, noch die erste, die vorher richtig beantwortet wurde. Es kommt entweder der Fehler : Invalid HTTPResponse oder Unexpected end of File.
Bin gerade am Verzweifeln und würde mich freuen, falls einer von euch mir helfen könnte
Hier mein Quellcode:
Server
Threads:
Client:
Hallo Leute, würde mich erstmal kurz vorstellen.
Bin 22 Jahre alt und studiere im moment Informatik im vierten Semester.
Bis jetzt keine Erfahrungen mit Netwerkgeschichten oder Java, dennoch gibt es nun eine kleine Praktikumsaufgabe die wir erledigen müssen, einen "Webservice" zu entwickeln der es ermöglicht, virtuelle Warenkörbe zu verwalten.
Auf Client Seite dürfen wir die Klasse HTTPUrlConnection verwenden, auf Server Seite nicht.
Soweit so gut.
Nach einigen ( ne menge ) Tagen programmieren, testen, und :bahnhof:
wollte ich mal hier nachfragen wo der Fehler liegt.
Der Client schickt 12 Anfragen zum Server, und dieser soll dementsprechend Antworten.
Ich habe auf Server Seite die erste Anfrage "bearbeitet" und die if Bedingung dafür programmiert, was er bei dieser tun soll.
Mein erstes Erfolgserlebnis hier, Es funktionierte :toll:
Daraufhin natürlich gleich an die nächsten Bedingungen gesetzt, damit alle Anfragen beantwortet werden können.
Alles ausprogrammiert, getestet und hier kommt das Problem:noe::
Keine der Anfragen wird richtig beantwortet, weder die restlichen 11, noch die erste, die vorher richtig beantwortet wurde. Es kommt entweder der Fehler : Invalid HTTPResponse oder Unexpected end of File.
Bin gerade am Verzweifeln und würde mich freuen, falls einer von euch mir helfen könnte
Hier mein Quellcode:
Server
Code:
import java.net.*;
public class Server
{
public static void main(String[] args)
{
Threads T;
ServerSocket serverSocket = null;
Socket socket;
Warenkorb test = new Warenkorb();
try
{
serverSocket = new ServerSocket(8088);
}
catch (Exception e)
{
System.out.println("Fehler 1");
}
while (true)
{
try
{
socket = serverSocket.accept();
T = new Threads(socket, test);
T.Verbindung();
}
catch (Exception e)
{
System.out.println("Fehler 2");
}
}
}
}
Threads:
Code:
import java.net.*;
import java.util.ArrayList;
import java.io.*;
public class Threads extends Thread
{
Socket socket;
Warenkorb test = new Warenkorb();
ArrayList<Warenkorb> Warenkörbe = new ArrayList<Warenkorb>();
public Threads(Socket s, Warenkorb t)
{
socket = s;
test = t;
}
public void Verbindung()
{
OutputStream out;
InputStream in;
String Rückgabe = "";
StringBuilder build = new StringBuilder();
try
{
System.out.println("Verbunden ");
out = socket.getOutputStream();
in = socket.getInputStream();
do
{
build.append((char) in.read());
}
while (in.available() !=0);
String StringInput = build.toString();
String [] abschnitt = (StringInput.split("\\s+")[1]).split("/");
if(StringInput.contains("GET /"))
{
if(abschnitt[1].equals("Beschreibung"))
{
int abschnitt2= Integer.parseInt(abschnitt[2]);
Rückgabe = test.Artikelbeschreibung(abschnitt2);
}
if(abschnitt[1].equals("Warenkorb"))
{
if(abschnitt[2].equals("Zeigen"))
{
for (int i = 0; i < Warenkörbe.size(); i++)
{
int abschnitt3= Integer.parseInt(abschnitt[3]);
if(Warenkörbe.get(i).WKid() == abschnitt3 )
{
Warenkörbe.get(i).Ausgabe(i);
}
}
}
}
}
else if (StringInput.contains("PUT /"))
{
if (abschnitt[2].equals("Neu"))
{
Warenkörbe.add(new Warenkorb());
Rückgabe = "Neuer Warenkorb wurde angelegt";
}
if(abschnitt[2].equals("Legen"))
{
for (int i = 0; i < Warenkörbe.size(); i++)
{
int abschnitt3= Integer.parseInt(abschnitt[3]);
int abschnitt4= Integer.parseInt(abschnitt[4]);
if(Warenkörbe.get(i).WKid() == abschnitt3);
{
Warenkörbe.get(i).Legen(abschnitt4, abschnitt3);
}
}
}
}
else if(StringInput.contains("DELETE /"))
{
if(abschnitt[1].equals("Warenkorb"))
{
if(abschnitt[2].equals("Löschen"))
{
for (int i = 0; i < Warenkörbe.size(); i++)
{
int abschnitt3= Integer.parseInt(abschnitt[3]);
if(Warenkörbe.get(i).WKid()== abschnitt3)
{
Warenkörbe.remove(i);
}
}
}
}
}
else
{
Rückgabe = ("Falsches Kommando");
}
for (int i = 0; i < Rückgabe.length(); i++)
{
out.write(Rückgabe.charAt(i));
}
out.flush();
System.out.println(("Empfangen: ") + build);
System.out.println(("Gesendet: ") + Rückgabe);
socket.close();
}
catch (Exception e)
{
System.out.println("Fehler 3");
}
}
}
Client:
Code:
import java.io.*;
import java.net.*;
public class Client
{
public static void main(String[] args)
{
String host = "http://localhost:8088";
getservice("GET", host, "/Beschreibung/22545497/");
getservice("GET", host, "/Beschreibung/12548947/");
getservice("PUT", host, "/Warenkorb/Neu/");
getservice("PUT", host, "/Warenkorb/Neu/");
getservice("PUT", host, "/Warenkorb/Legen/1/22545497/");
getservice("PUT", host, "/Warenkorb/Legen/1/12545497/");
getservice("PUT", host, "/Warenkorb/Legen/1/12548947/");
getservice("GET", host, "/Warenkorb/Zeigen/1/");
getservice("DELETE", host, "/Warenkorb/Löschen/1/");
getservice("PUT", host, "/Warenkorb/Legen/2/22545497/");
getservice("GET", host, "/Warenkorb/Zeigen/1/");
getservice("GET", host, "/Warenkorb/Zeigen/2/");
}
private static void getservice(String method, String host, String arg) {
HttpURLConnection connection = null;
OutputStreamWriter wr = null;
BufferedReader rd = null;
StringBuilder sb = null;
String line = null;
URL serverAddress = null;
System.out.println("Anfrage: "+"\""+ method + " "+ arg +"\""+ " an: " + host);
try {
serverAddress = new URL(host + arg);
// set up out communications stuff
connection = null;
// Set up the initial connection
connection = (HttpURLConnection) serverAddress.openConnection();
connection.setRequestMethod(method);
connection.setDoOutput(true);
connection.setReadTimeout(5000);
connection.setUseCaches(false);
connection.connect();
// get the output stream writer and write the output to the server
// not needed in this example
// wr = new OutputStreamWriter(connection.getOutputStream());
// wr.write("");
// wr.flush();
// read the result from the server
rd = new BufferedReader(new InputStreamReader(connection
.getInputStream()));
sb = new StringBuilder();
while ((line = rd.readLine()) != null) {
sb.append(line + '\n');
}
System.out.println("Antwort: " + '\n' + sb.toString());
} catch (MalformedURLException e) {
System.out.println(e.getMessage());
} catch (ProtocolException e) {
System.out.println(e.getMessage());
} catch (IOException e) {
System.out.println(e.getMessage());
} finally {
// close the connection, set all objects to null
connection.disconnect();
rd = null;
sb = null;
wr = null;
connection = null;
}
}
}