Привет, ребята, я хочу написать инструмент, который взаимодействует с phpmyadmin. Я хочу создать новую таблицу. Для этого мне нужны cookie и токен безопасности. Обе вещи я сделал. Моя проблема в том, что я возьму куки и открою новый URLConnection с этими куки. И возьмите токен для подтверждения моего запроса. Но каждый раз, когда я делаю это, я получаю ответ, что мой SQLQuery пуст, и если вы получаете эту ошибку, ваш токен недействителен. А неверный токен означает, что ваши куки не очень хорошо размещены в новом соединении, поэтому у вас нет той же сессии, что и раньше. Что я сделал не так, есть идеи, чтобы решить эту проблему?
Вот мой код: (он очень уродливый, но только для целей тестирования)
import java.io.*;
import java.net.*;
import java.util.List;
public class connect {
public void connectto() throws IOException{
URLConnection connection = new URL("http://localhost/phpmyadmin/index.php").openConnection();
List<String> cookies = connection.getHeaderFields().get("Set-Cookie");
connection.connect();
InputStream response = connection.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(response));
String line;
String token = "";
while((line = br.readLine())!= null){
System.out.println(line);
if (line.contains("var token = ")){
System.out.println("hit");
token = "&token=" + line.substring(line.indexOf("var token = '") + "var token = '".length()).substring(0, line.substring(line.indexOf("var token = '") + "var token = '".length()).indexOf("';"));
}
}
System.out.println(token);
String url = URLEncoder.encode("db=mysql&sql_query=CREATE TABLE testtable(testtable TEXT);" + token, "UTF-8");
connection = new URL("http://localhost/phpmyadmin/sql.php?" + url).openConnection();
connection.setDoOutput(true);
for (String cookie : cookies) {
System.out.println(cookie.split(";", 2)[0]);
connection.addRequestProperty("Cookie", cookie.split(";", 2)[0]);
}
connection.connect();
response = connection.getInputStream();
br = new BufferedReader(new InputStreamReader(response));
line = "";
while((line = br.readLine())!= null){
System.out.println(line);
}
}
}