Page 1 of 1

Was ist der beste Weg, XML-String über Java-Sockets zu senden?

Posted: 16 Jan 2025, 07:07
by Guest
Ich habe es versucht, aber irgendwann kann ich die Antwort vom Server nicht lesen. (Die Antwort erfolgt in XML).

Ich habe gelesen, dass das Schreiben über Sockets aufgrund des String-Bruchs eine Pufferung erfordert. Irgendwie habe ich herausgefunden, dass dies wahr ist, als ich einen Jaxb-Unmarshaller verwendet habe und dieser eine SAX-EOF-Ausnahme gemeldet hat, was bedeutet, dass die gelesene XML-Datei nicht vollständig war.

Wie kann ich das Schreiben und Lesen richtig puffern?

Code: Select all

StringBuilder sb = new StringBuilder();
sb.append("");
sb.append("").append(hd.getRequestType()).append("");
sb.append("");
sb.append("").append(rq.getAgentCode()).append("");
sb.append("").append(rq.getPin()).append("");
sb.append("").append(rq.getDestination()).append("");
sb.append("").append(rq.getAgentTransId()).append("");
sb.append("").append(rq.getVendorCode()).append("");
sb.append("").append(rq.getAmount()).append("");
sb.append("").append(rq.getProductCode()).append("");
sb.append("").append(rq.getComments()).append("");
sb.append("").append(rq.getClientType()).append("");
sb.append("");

Socket socket = new Socket("41.206.23.21",7101);
OutputStream os = socket.getOutputStream();
InputStream in = socket.getInputStream();

OutputStream buf = new BufferedOutputStream(os);
out = new OutputStreamWriter(buf);

System.out.printf("\nxml is %s",sb.toString());
System.out.print("\n--------writing--to--socket-----");
out.write(sb.toString());
out.flush();

//read response
InputStream bui = new BufferedInputStream(in);
rd = new InputStreamReader(bui);
System.out.print("\nxml response"+rd.toString());

in.close();
out.close();
socket.close();