Java Applet 的 URL 对 PHP 的 URL 没有影响


Java Applet's URLConnection to PHP has no effect

我已经研究了Oracle文档和示例,但仍然无法使其工作。

我有一个Java Applet,它只是尝试使用URLConnection和OutputStreamWriter通过POST将文本字段发送到PHP脚本。Java端似乎工作正常,没有抛出异常,但是PHP没有在我的页面上显示任何输出。我是一个PHP菜鸟,所以请耐心等待。

以下是相关的 Java 部分:

    try {
            URL url = new URL("myphpfile.php");
            URLConnection con = url.openConnection();
            con.setDoOutput(true);
            out = new OutputStreamWriter(con.getOutputStream());
            String outstring = "field1=" + field1 + "&field2=" + field2;
            out.write(outstring);
            out.close(); 
    }
    catch (Exception e) {
        System.out.println("HTTPConnection error: " + e);
        return;
    }

这是相关的PHP代码:

    <?php
            $field1= $_POST['field1'];
            $field2= $_POST['field2'];
            print "<table><tr><th>Column1</th><th>Column2</th></tr><tr><td>" .
                 $field1 . "</td><td>" . $field2 . "</td></tr></table>";
    ?>

我看到的只是表标题 Column1 和 Column2(让我们保持这些名称通用以进行测试)。我做错了什么?我是否需要告诉我的 PHP 脚本检查我的 Java 代码何时写入?

不使用 $_POST ,使用 $_REQUEST 或 $_GET

PHP 脚本中在哪里设置 $field 1 和 $field 2?

试试URL url = new URL("myphpfile.php?field1=" + field1 + "&field2=" + field2);

嗯,我觉得我已经尝试了所有可以用PHP尝试的东西,所以我最终选择了JSObject。现在这很容易。

工作 Java 代码:

JSObject window = JSObject.getWindow(this);
// invoke JavaScript function
String result = "<table><tr><th>Column1</th><th>Column2</th></tr><tr><td>" 
+ field1 + "</td><td>" + field2 + "</td></tr></table>";
window.call("writeResult", new Object[] {result});

相关的工作Javascript:

function writeResult(result) {
        var resultElem =
            document.getElementById("anHTMLtagID");
        resultElem.innerHTML = result;
    }

这里,我甚至可以通过Ajax将结果从Javascript发送到PHP,以执行与数据库相关的操作。耶!