2011-06-29 7 views
0

こんにちは、私は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); 
    } 

    } 
} 
+0

Apache HttpClientを試しましたか?それはあなたのためのすべてのものを処理します。 – rodrigoap

+0

ええ、私はhttpclientを試しましたが、このケースでは有用でないことが多く、クッキーが拒否されたエラーが発生することがよくあります。私はオプションのBROWSER.COMPATIBLITYを使用しているので、httpclientなしで試してみたいです。 :) – Joe

答えて

0

私の謝罪、私はあなたの問題を誤解が、なぜあなたはphpMyAdminを経由リクエストを強制している場合は? phpMyAdminのポイントは、人々にMySQLデータベースを扱うためのUIを提供することです。 MySQLデータベースとやりとりしたいのであれば、データベースに直接接続してJavaコード内の文を実行する必要があります。

また、あなたには当てはまらないのですが、もしならば、JavaとDB間の直接接続ではなく、phpMyAdminで動作する必要があります。

+0

さて、私はwebapps Cookie-Handling and Sessionsでphpmyadminを使いこなしています。だから私はできるだけ多くのknowlegdeを収集して、後で私はhttp接続を使用するいくつかの他のアプリケーションをコーディングする必要があり、私はこの問題のためにhttpクライアントを使用しません。 – Joe

+0

これは意味があります。私の申し訳はありませんが、私はこの問題をさらに深めることはできません。私はちょうどあなたがJavaコードで行うことができるMySQLの機能のためにphpMyAdminを経由していることが疑わしいと思った。がんばろう。 – Grambot

+0

問題は誰も私を助けることができることを願って:) – Joe