Я попробовал это, но где-то не могу прочитать ответ от сервера. (Ответ в формате XML).
Я читал, что запись через сокеты требует буферизации из-за разрыва строки. Каким-то образом я обнаружил, что это правда, когда я использовал демаршаллер jaxb, и он сообщил об исключении SAX EOF, что означает, что прочитанный xml не был полным.
Пожалуйста, как правильно буферизовать запись и чтение?
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();