我正在通过 XML 发送登录信息,并收到以下错误:
org.xml.sax.SAXParseException: Premature end of file.
我的 XML 文件是:
<?xml version="1.0" encoding="UTF-8"?>
<info>
<miniInfo>
<nombre>chichca</nombre>
<password>TopSecret</password>
</miniInfo>
</info>
这将作为字符串发送到服务器。服务器应该将其添加到 XML 文件中。
坏掉的代码如下:
public void login() {
mensaje = com.getMensaje(); // para que lo que me llegue sea igual a lo que meto en el xml
pass = com.getPass();
if (mensaje == null || pass == null) {
println("aaaaaaaaaaaaaaaaaaaaaaaaaaaa");
}
else {
//XML [] recorrido = usuario.getChildren(); //me recorre los hijos que son miniInfo, donde guardo names y pass
for (int i=0; i < children.length; i++) {
XML usuarios = children[i];
//println("cantidad de miniinfo = " + children.length);
try {
//creo un nuevo arreglo
XML [] hijos = usuarios.getChildren();//obtengo los hijos de recorrido nombre y pass
for (int j=0; j < hijos.length; j++) {
XML nombre = hijos[0];
println("nombre = " + nombre );
String nombreText = nombre.getContent();
println("contenido = " + nombreText);
println("lo que llego" + mensaje);
XML passwrod = hijos[1];
String passwordText = passwrod.getContent();
//comparacion del nombre
if ( pass == passwrod.getContent()) {
println("INGRESOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO");
}//cierre comparacion del nombre
}
}
catch(Exception e) {
println("ERROR EN LOGIN" + e);
}
}
}
}//cierre del login
我检查了 XML 和空变量的问题;并尝试过flush()
;没有成功。
这是我的客户代码:
(主要的)
Comunicacion com;
void setup(){
size(300,300);
com = new Comunicacion();
com.start();
}
void draw(){
background(200);
}
void mousePressed(){
com.enviar();
}
void keyPressed(){
if(key == 'e'){
com.enviarVerificacion();
}
import java.net.*;
import java.io.*;
public class Comunicacion extends Thread {
String mensaje="chichca";
String pass = "TopSecret";
String m = "loginVerificacion";
String n = "loginPass88888";
Socket socket;
int port;
DataInputStream lectura; // leer datos que entran
DataOutputStream escritura; //escribir datos que salen
public Comunicacion() {
try {
port = 5000;
socket = new Socket(InetAddress.getLocalHost(), port);
escritura = new DataOutputStream(socket.getOutputStream());
println("se conecto el cliente");
}
catch(IOException e) {
println("ERROR creacion comunicacion");
}
}//constructor
public void run() {
while (true) {
try {
sleep(50);
}
catch(Exception e) {
println("ERROR RUN cliente");
}
}
}
public void enviar() {
try{
escritura.writeUTF(mensaje);
println("cliente envio " + mensaje);
escritura.writeUTF(pass);
println("el clieunte envio de pass " + pass );
escritura.flush();
//escritura.close();
}
catch(IOException e){
println("EEROR al enviar desde el cliente");
}
}//cierre envair
///////////////////---------------------------------------------
public void enviarVerificacion() {
try{
escritura.writeUTF(m);
println("cliente envio " + m);
escritura.writeUTF(n);
println("el clieunte envio de pass " + n );
escritura.flush();
}
catch(IOException e){
println("EEROR al enviar desde el cliente");
}
}//cierre envair
}//final clase
这是我的服务器代码(两个类):
(主要的)
Informacion info;
void setup(){
size(300,300);
info = new Informacion();
}
void draw(){
info.admon();
}
import java.net.*;
import java.io.*;
public class Comunicacion extends Thread {
Socket socket;
ServerSocket serverSocket;
DataInputStream lectura;
int port;
String mensaje="";
String pass="";
boolean controlador = false;
public Comunicacion() {
port = 5000;
try {
serverSocket = new ServerSocket(port);
socket = serverSocket.accept();
lectura = new DataInputStream(socket.getInputStream());
println("server se coencto");
}
catch(IOException e) {
println("ERROR COMUNICACION SERVER");
}
}
public void run() {
while (true) {
try {
recibir();
sleep(50);
}
catch(Exception e) {
println("error en el server run");
}
}
}
public void recibir() {
try {
mensaje = lectura.readUTF();
println("serverrrrrrrr reibio " + mensaje);
pass = lectura.readUTF();
println("el serverrrrrrrrr recibir de pass " + pass);
if (controlador == false) {
controlador = true;
}
}
catch(IOException e) {
println("ERROR del server al recibir" + e);
}
}
public boolean getControlador() {
return controlador;
}
public void setControlador(boolean c) {
controlador = c;
}
public String getMensaje() {
return mensaje;
}
public String getPass() {
return pass;
}
}//cierre clase
XML 类
public class Informacion {
XML usuario;
//XML miniInfo;
Comunicacion com;
String mensaje="";
String pass ="";
XML [] children;
public Informacion() {
com = new Comunicacion();
com.start();
usuario = loadXML("data/info.xml");
children = usuario.getChildren("miniInfo"); //recorro los hijos que hay
}
//-------------------------------------
public void admon() {
if (com.getControlador()) {
registrarse();
login();
com.setControlador(false);
}
}
//------------------
public void registrarse() {
try {
mensaje = com.getMensaje(); // para que lo que me llegue sea igual a lo que meto en el xml
pass = com.getPass();
println("mensaje "+ mensaje);
XML miniInfo = new XML ("miniInfo");
//para agregar el nombre del usuario
XML nombreXml = new XML("nombre");
String nombreActual = miniInfo.getContent();
nombreXml.setContent(mensaje);
//para agregar las contraseña
XML passwordXml = new XML("password");
String passwordActual = miniInfo.getContent();
passwordXml.setContent(pass);
miniInfo.addChild(nombreXml);
miniInfo.addChild(passwordXml);
usuario.addChild(miniInfo);
saveXML(usuario, "data/info.xml");
//println(usuario);
}
catch(Exception e) {
}
}
//-------------------------------------------------
//-------------------------------------------------
public void login() {
mensaje = com.getMensaje(); // para que lo que me llegue sea igual a lo que meto en el xml
pass = com.getPass();
if (mensaje == null || pass == null) {
println("aaaaaaaaaaaaaaaaaaaaaaaaaaaa");
}
else {
//XML [] recorrido = usuario.getChildren(); //me recorre los hijos que son miniInfo, donde guardo names y pass
for (int i=0; i < children.length; i++) {
XML usuarios = children[i];
//println("cantidad de miniinfo = " + children.length);
try {
//creo un nuevo arreglo
XML [] hijos = usuarios.getChildren();//obtengo los hijos de recorrido nombre y pass
for (int j=0; j < hijos.length; j++) {
XML nombre = hijos[0];
println("nombre = " + nombre );
String nombreText = nombre.getContent();
println("contenido = " + nombreText);
println("lo que llego" + mensaje);
XML passwrod = hijos[1];
String passwordText = passwrod.getContent();
//comparacion del nombre
if ( pass == passwrod.getContent()) {
println("INGRESOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO");
}//cierre comparacion del nombre
}
}
catch(Exception e) {
println("ERROR EN LOGIN" + e);
}
}
}
}//cierre del login
}//informacion