こんにちは、私はphpmyadminとやりとりするツールをコーディングする必要があります。私は新しいテーブルを作成したい。このために私はクッキーとセキュリティトークンが必要です。私がやったことはどちらも。私の問題は、私はクッキーを受け取り、これらのクッキーで新しいURLConnectionを開くことです。そして、私の要求を検証するためにトークンを取る。しかし、私はこれを行うたびに、私は私のSQLQueryが空であるという応答を得て、もしあなたがこのエラーを受け取ったら、urトークンは無効です。そして、無効なトークンは、新しい接続にur cookieがうまく配置されていないことを意味し、以前と同じセッションを持っていません。私は間違って、何かこの問題を解決するためのアイデアを何をしたのですか?ここでJava Cookie /セッション - 問題 - phpmyadmin
は私のコードです:(その非常に醜いが、その唯一のテストの目的のために)
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);
}
}
}
Apache HttpClientを試しましたか?それはあなたのためのすべてのものを処理します。 – rodrigoap
ええ、私はhttpclientを試しましたが、このケースでは有用でないことが多く、クッキーが拒否されたエラーが発生することがよくあります。私はオプションのBROWSER.COMPATIBLITYを使用しているので、httpclientなしで試してみたいです。 :) – Joe