Problema con socket segunda peticion

roberto
29 de Julio del 2009

En principio la clase request q cree realiza la primera peticion correctamente, pero al realizarla segundame devuelve vacio en el caso de q comente wr.close();rd.close();despues d realizar la peticion,o error si los dejo sin comentar.no hay forma d q haga dos peticiones seguidas



Estaeslaclase



importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.OutputStreamWriter;
importjava.io.UnsupportedEncodingException;
importjava.net.InetAddress;
importjava.net.Socket;
importjava.net.URLEncoder;
importjava.net.UnknownHostException;



publicclassrequest{
Stringhostname;
intport;
Socketsocket;
BufferedReaderrd;
BufferedWriterwr;

publicrequest(Stringhostname,intport)throwsIOException{
this.hostname=hostname;
this.port=port;
try{
InetAddressaddr=InetAddress.getByName(hostname);
socket=newSocket(addr,port);
}catch(UnknownHostExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}


}
public String doPost(Stringpath,Stringdata)throwsIOException{
returnhacerPeticion("POST",path,data);
}

public String doGet(Stringpath,Stringdata)throwsIOException{
returnhacerPeticion("GET",path+"?"+data,"");
}

public String hacerPeticion(Stringpeticion,Stringpath,Stringdata)throwsIOException{



try{
wr=newBufferedWriter(newOutputStreamWriter(socket.getOutputStream(),"UTF8"));
wr.write(peticion+path+"HTTP/1.1\r\n");
wr.write("Accept:image/gif,image/jpeg,image/pjpeg,application/x-ms-application,application/vnd.ms-xpsdocument,application/xaml+xml,application/x-ms-xbap,application/x-shockwave-flash,*/*\r\n");
wr.write("Referer:http://"+hostname+"/global-adv.html\r\n");
wr.write("Accept-Language:es\r\n");
wr.write("User-Agent:Mozilla/4.0(compatible;MSIE8.0;WindowsNT6.0;Trident/4.0;SLCC1;.NETCLR2.0.50727;MediaCenterPC5.0;.NETCLR3.5.30729;.NETCLR3.0.30729)\r\n");
wr.write("Content-Type:application/x-www-form-urlencoded\r\n");
wr.write("Accept-Encoding:gzip,deflate\r\n");
wr.write("Host:"+hostname+"\r\n");
wr.write("Content-Length:"+data.length()+"\r\n");
wr.write("Connection:Keep-Alive\r\n");
wr.write("Cache-Control:no-cache\r\n");
wr.write("\r\n");


wr.write(data);
wr.flush();

rd=newBufferedReader(newInputStreamReader(socket.getInputStream()));
Stringline;
Stringtexto="";
line=rd.readLine();
while((line=rd.readLine())!=null){
texto=texto+"\n"+line;
}

/*Elproblema en principio viene d
estas dos lineas q vienena continuacion*/

wr.close();
rd.close();

//cerrarConexion();
returntexto;

}catch(UnsupportedEncodingExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}


//cerrarConexion();
return"";

}

publicvoidcerrarConexion(){try{
this.socket.close();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}}


}



Y esta es la aplicacion principal.



importjava.io.IOException;


public class main{

public static void main(String[]args) throwsIOException{

requestprueba=newrequest("www.webestilo.com",80);

Stringstr="";

str=prueba.doGet("/php/ejem/procesa2.phtml","nombre=111&apellidos=222");

System.out.println("Peticion1:\n"+str);

str=prueba.doPost("/php/ejem/procesa2.phtml","nombre=333&apellidos=444");

System.out.println("Peticion2:\n"+str);



}

}



A ver si alguien me puede echar un cable con esto.Saludos