【问题标题】:Making a web service in PHP to give information to Java用 PHP 制作 Web 服务以向 Java 提供信息
【发布时间】:2011-08-26 16:08:55
【问题描述】:

根据我关于用 Java 连接到 MySQL 数据库的问题,我希望用 PHP 创建一个 Web 服务。我的 Java 程序需要让 Web 服务从 MySQL 数据库中收集一些数据并将结果发回。但是,我有一些困境:

首先,我的网络主机不支持Java,因此服务器端需要用PHP编写,而客户端需要用Java编写。

其次,我发现的所有教程似乎都涉及创建一个完整的 Web 服务项目,以便我的 Java 程序与 Web 服务进行通信,而实际上只有几个类需要联系 PHP Web 服务。

而且,您可能已经猜到了,但我对 Web 服务一无所知。只是建议我使用一个来绕过 JDBC 驱动程序的 GPL 许可证...

我意识到以前可能已经在这里问过类似的问题,但由于我是一个完全新手,这里看到的帖子没有包含足够的信息,我需要尽可能多的帮助 - 几乎一步一步步骤指南!

另外,我确实考虑过只使用标准的 PHP 套接字,因为我很确定我知道如何使用它们。但是,我不知道它们有多安全,也不想冒任何风险,因为我需要检索许可证密钥等信息!

提前致谢

【问题讨论】:

    标签: java php mysql web-services


    【解决方案1】:

    您不需要使用 PHP 套接字,您只需要在您的 Web 主机上创建一个简单的 PHP 脚本,该脚本从 MySQL 数据库中获取您需要的数据并输出数据以供您的 Java 客户端读取。

    您的 PHP 脚本需要:

    1. 从 Java 客户端检索任何查询参数(可能 通过 $_POST 或 $_GET)。
    2. 连接 MySQL 的信息(主机名/IP 地址、数据库名称、 用户名、密码)。
    3. 运行 SQL 查询/查询以从数据库中获取数据。
    4. 输出数据供java客户端读取,格式为XML、JSON、HTML等双方都能接受的格式。

    您可以像这样构建脚本:

    <?php
        // 1. Read and validate input parameters
        $myquery_val = $_POST['queryval'];
    
       // 2. Connect to MySQL
    
       // 3. Fetch MySQL data
    
       // 4. Output data
    ?>
    

    要了解如何连接到 MySQL 和检索数据,请阅读 MySQL PDO:http://php.net/manual/en/ref.pdo-mysql.php

    【讨论】:

    • 我同意。如有必要,您可以通过 https 进行所有操作。
    • @JJ 哦,这似乎太简单了! this post 是我如何在我的 Java 程序中使用它的一个例子吗?唯一想到的两个问题是:这种方法很容易被劫持吗?而且,我该如何做到只有我的程序才能访问脚本?
    • 您可以包括身份验证,要求 Java 应用程序首先登录以检索会话密钥,然后将该会话密钥传递给 PHP 端以首先进行身份验证。你必须通过 HTTPS 来保护它。
    • 另外,你为什么推荐 MySQL PDO?标准的 PHP MySQL 查询还不够吗?
    • @Andy 是的,标准查询就足够了,但是 PDO 似乎正在成为更标准的方法。
    【解决方案2】:

    我要做的是在您的 PHP 服务和 Java 客户端之间使用一种不可知的通信形式。我选择的武器是 XML。

    步骤如下:

    1. 创建将与您的数据库交互并获取您想要使用的数据的 PHP 类。 GitHub 有大量的示例和源代码。 Sample PHP-MySQL Database Abstraction Layer
    2. 创建一个 RESTful php 服务,该服务从步骤 1 获取数据并将其转换为 XML REST 服务。 Checkout the Recess Framework, an easy to use REST framework
    3. 创建您的 JAVA 客户端,它应该只需要能够使用 HTTP 并使用 XML。不需要巨大的肥皂或其他框架。

    【讨论】:

    • 特纳。感谢您的回答,您提供的链接非常有帮助,您的解决方案更接近我的想法。但是,您能否验证该系统的安全性/被劫持的难易程度?以及我如何确保只有我的 Java 程序才能访问该服务。另外,如果我要使用您的方法,如果您能提供一些示例代码,那将真的对我有帮助 - 至少对于第三步!谢谢。
    • 我想我大概知道如何在不使用 Recess 的情况下创建 Web 服务,但我不确定它是否是 RESTful!你能看看下面的文章,看看是否真的对我有用吗? PHP Web Service's available for both REST and SOAP consumersWeb Services Tutorial - W3SBasic Web Service using PHP, MySQL, XML, and JSON
    • 虽然,即使那些文章帮助我实现了我想做的事情,我仍然不知道安全风险,或者确保只有我的 Java 应用程序才能访问 Web 服务!还有,PS 为什么我不能在评论开始时通知@Justin Turner?
    • 由于缺乏关于此类解决方案的信息,以及我缺乏时间和知识,我暂时选择使用 JJ 的解决方案。但是,我仍然感谢您的回答,我计划投资 SSL 证书。和专用服务器,以便我可以用我熟悉的 Java 语言创建 Web 服务!
    • 您好,请原谅我的缺席。创建 REST 服务对于您的问题来说有点臃肿。使用 JJ 的解决方案就可以了。至于安全性,您可以使用编码到脚本中的简单密码/用户名。使用 SSL。此外,请绝对确保您清理了用户输入。请看link
    猜你喜欢
    • 2013-09-14
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多