Aggiungo un codice impostato basandomi sulle poche cose trovate in rete a proposito del mio problema.
Uso come sito d'esempio "facebook".
Purtroppo nella pagina output.html non viene salvato il contenuto della pagina successiva all'autenticazione, ma sempre quella del login!
codice:
package asd;
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.CookieManager;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
public class ADS {
public static void main(String[] args) {
getPaginaAll("https://www.facebook.com/");
}
private static void getPaginaAll(String link){
String pagina="";
try{
String data = URLEncoder.encode("email", "UTF-8") + "=" + URLEncoder.encode("MIA_EMAIL@QUALCOSA.IT", "UTF-8");
data += "&" + URLEncoder.encode("pass", "UTF-8") + "=" + URLEncoder.encode("MIA_PASSWORD", "UTF-8");
URL url = new URL(link);
CookieManager cm = new CookieManager();
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String headerName=null;
String cookie="";
for (int i=1; (headerName = conn.getHeaderFieldKey(i))!=null; i++) {
if (headerName.equals("Set-Cookie")) {
cookie = conn.getHeaderField(i);
}
}
System.out.println(cookie);
wr.close();
rd.close();
URL myUrl = new URL("https://www.facebook.com/?ref=tn_tnmn"); //Home
URLConnection urlConn = myUrl.openConnection();
String myCookies =cookie;
urlConn.setRequestProperty("Cookie", myCookies);
urlConn.connect();
BufferedReader bufrd = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
InputStream is = urlConn.getInputStream();
OutputStream os = new FileOutputStream("output.html");
int dd;
while((dd=is.read()) != -1) {
os.write(dd); }
is.close();
os.close();
}catch (IOException e){
}
System.out.println("Fatto");
}
}
Nessuno ha una soluzione?