0

だからここに私が知っていることがあります。Java アプリケーションが添付されています。2 つの JPanel があり、1 つは基本的なグラフで、もう 1 つはより詳細なグラフです。これら 2 つのグラフは、アプレットで一緒にホストされます。アプレットは、すべての生徒調査データを含むファイルを読み取ります。これはすべて、Desire 2 Learn http://www.desire2learn.com/と呼ばれる courselink https://courselink.uoguelph.ca/shared/login/login.htmlのインスタンスでホストされています。

したがって、これはすべて機能します。そうでない側面は、適切なグラフを表示できるように、サインオンしている courselink から取得することです。courselink の開発に取り組んでいる人が、その情報を取得して JSON ブロックで返す php プログラムをくれました。

PHPコードは、Javaアプリ(courselinkでホストされている)とは別のサーバーでホストされています。だから、私が試したことは次のとおりです:

最初に、Java から返されたページを取得するだけです

String name = null;
    URL php = null;
    try {
        php = new URL ("http://coles- vs250.cs.uoguelph.ca/whoami/index.php");
    } catch (MalformedURLException e) {
        e.printStackTrace();
    }
    URLConnection yc = php.openConnection();
    BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
    String inputLine;

    while ((inputLine = in.readLine()) != null) 
        System.out.println(inputLine);
    in.close();
    return name;
}

次に、文字列を解析し、ユーザー名を解析して返します。コースリンクでこれを実行すると、セキュリティエラーが発生しますが、Java セキュリティエラーについては何も知りません。エラーは次のとおりです。

Exception in thread "AWT-EventQueue-2" java.security.AccessControlException: 
access denied ("java.net.SocketPermission" 
"coles-vs250.cs.uoguelph.ca:80"  "connect,resolve")

次に、htmlページからphpを呼び出すために使用しようとしたJQueryので、文字列は正しい調査の変数になり、Javaアプリはそれを取得できました。いくつかの調査の後、これが私がまとめたものです。私は JQuery を知りません。この種のプログラミングに関しては、実際には私の要素から完全に外れています。アラートが表示されず、何が問題なのかわかりません。

<html>
    <head>
        <title>Java Example</title>
        <script type='text/javascript' src='http://code.jquery.com/jquery-1.5.2.js'></script>
        <script type='text/javascript'>
            $(document).ready(function() {
                alert("String from iframe: " + $('#whoami').contents().find('body').html());
                whoami();
            });

            function whoami() {
                $.ajax({
                    type: "GET",
                    data: {},
                    url: "http://coles-vs250.cs.uoguelph.ca/whoami/index.php",
                    success: function(data) {
                        alert("whoami complete: " + data);
                    }
                });
            }
        </script>
    </head>

    <body>
        <p>
            <iframe style="visibility: visible;" id="whoami" src="http://coles-vs250.cs.uoguelph.ca/whoami/index.php"></iframe>--&gt;</p>
        <p>
            <applet width="800" height="1000" code="graphRun.class"></applet>
        </p>
    </body>

</html>

すべてのヘルプや提案をいただければ幸いです。取得または忘れた情報が他にある場合は、最善を尽くします。

4

3 に答える 3

0

更新しました

ユーザーはブラウザでサーバーにログインすると言います。つまり、そのブラウザーから実行して、リモート サーバーからコンテンツをダウンロードし、コンテンツをローカルに保存するコードが必要です。私は次の方法で問題に対処します。

  1. Web ページを作成し、サーバー (example.com/download.html) でホストします。
  2. Java プログラムを使用して、デフォルトのブラウザーを開いて Web ページを開きます。

    URI uri = new URI("http",null, "example.com/download.html","",null); Desktop.getDesktop().browse(uri);

  3. jquery を使用してリモート サーバーのコンテンツをダウンロードする

  4. コンテンツを特定のファイルの場所に保存する方法を見つけます - 1 つの可能性はダウンロードです (フラッシュが必要です)
  5. Java アプリケーションには、特定のファイルの存在をチェックする while ループがあります。そこにある場合は、コンテンツがあります。そうでない場合は、待ち続ける必要があります。

  6. 以下のコードを使用して、ファイルを json オブジェクトに変換します。

GetJsonFromWeb:

private JSONObject getJSONFromWeb(String param){
    try{
        FileInputStream is = new FileInputStream("file.json");
        BufferedReader br = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
        StringBuilder sb = new StringBuilder();
        int cp;
        while((cp = br.read()) != -1) {
            sb.append((char) cp);
        }
        String jsonText = sb.toString();
        return new JSONObject(jsonText);
    } catch (IOException e) {
        //Handle exception
    } catch (JSONException e) {
        //Handle exception
    }
    return null;
}

次に、このオブジェクトを次のように使用できます。

JSONObject jsonObj = getJSONFromWeb("Param_value");
try {
    boolean val1 = jsonObj.getBoolean("some_Json_index");
    double val2 = jsonObj.getDouble("some_Json_index2");
    //etc.
于 2013-07-15T16:41:10.510 に答える