0

2 つの変数の値を Java アプレットから PHP ファイルに送信したい)、次のコードを試しました。

try {
URL url = new URL(getCodeBase(),"abc.php");
URLConnection con = url.openConnection();

con.setDoOutput(true);
PrintStream ps = new PrintStream(con.getOutputStream());

ps.print("score="+score);
ps.print("username="+username);

con.getInputStream();

ps.close();
} catch (Exception e) {
   g.drawString(""+e, 200,100);
}

次のエラーが発生しました。

java.net.UnknownServiceException:protocol doesn't support output
4

2 に答える 2

0

サーバー上の PHP スクリプトに (POST 経由で) 値を送信するために、独自のアプレットで使用したコードを次に示します。

私は次のように使用します:

String content = "";
   content = content + "a=update&gid=" + gid + "&map=" + getMapString();
   content = content + "&left_to_deploy=" + leftToDeploy + "&playerColor=" + playerColor;
   content = content + "&uid=" + uid + "&player_won=" + didWin;
   content = content + "&last_action=" + lastActionCode + "&appletID=" + appletID;

   String result = "";
   try {
    result = requestFromDB(content);
    System.out.println("Sending - " + content);
   } catch (Exception e) {
     status = e.toString();
   }

ご覧のとおり、送信するすべての値を「コンテンツ」文字列に追加してから、requestFromDB メソッドを呼び出しています (「要求」値を投稿し、サーバーの応答を返します)。

  public String requestFromDB(String request) throws Exception
  {
    // This will accept a formatted request string, send it to the
    // PHP script, then collect the response and return it as a String.
    URL                 url;
    URLConnection   urlConn;
    DataOutputStream    printout;
    DataInputStream     input;
    // URL of CGI-Bin script.      
     url = new URL ("http://" + siteRoot + "/globalconquest/applet-update.php");

    // URL connection channel.
    urlConn = url.openConnection();
    // Let the run-time system (RTS) know that we want input.
    urlConn.setDoInput (true);
    // Let the RTS know that we want to do output.
    urlConn.setDoOutput (true);
    // No caching, we want the real thing.
    urlConn.setUseCaches (false);
    // Specify the content type.
    urlConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    // Send POST output.
    printout = new DataOutputStream (urlConn.getOutputStream ());
    printout.writeBytes (request);
    printout.flush ();
    printout.close ();
    // Get response data.
    input = new DataInputStream (urlConn.getInputStream ());
    String str;
   String a = "";
    while (null != ((str = input.readLine())))
    {
      a = a + str;
    }

    input.close ();
    System.out.println("Got " + a);
    if (a.trim().equals("1")) {
       // Error!
       mode = "error";
    }

   return a;

  } // requestFromDB

私の PHP スクリプトでは、$_POST を見て値を確認するだけで済みます。次に、応答を印刷します。

ノート! セキュリティ上の理由から、PHP スクリプトはアプレットと同じサーバー上にある必要があります。そうでない場合、これは機能しません。

于 2013-07-07T20:23:27.380 に答える
0
java.net.UnknownServiceException:protocol doesn't support output

出力をサポートしていないプロトコルを使用していることを意味します。

getCodeBase()ファイルのURLを参照するので、次のようなものです

file:/path/to/the/applet

プロトコルはfileで、outout をサポートしていません。http出力をサポートするプロトコルを探しています。

多分あなたが望んgetDocumentBase()でいた 、実際にはアプレットがあるWebページを返します。

http://www.path.to/the/applet
于 2013-07-07T09:48:40.117 に答える