【问题标题】:How to implement communication between Java client application (Android) and PHP server application?如何实现Java客户端应用程序(Android)和PHP服务器应用程序之间的通信?
【发布时间】:2011-01-16 14:19:02
【问题描述】:

我有一个简单的 Java 客户端应用程序(Android 应用程序)。我必须编写一个 PHP 服务器应用程序,它接收来自 Java 客户端应用程序的请求,将一些数据写入 MySQL 数据库或从 MySQL 数据库读取一些数据。它应该分别响应状态消息(写入失败/成功)或请求的数据。

如何让 Java 客户端发送请求并接收 PHP 程序的回复,以及 PHP 程序如何接收请求并发送回复?我在 Google 上搜索了 SOAP 和 REST 架构,但正在寻找一个简单的教程,它可以让我实现这个简单的程序。

谢谢。

【问题讨论】:

    标签: java php android client-server


    【解决方案1】:

    通过基本的 Java SE API,您可以使用 java.net.URLConnection 来触发 HTTP 请求。触发GET 请求的基本示例可以在Sun tutorial on the subject 中找到。 POST 请求没有太大区别,您只需将URLConnection#setDoOutput() 设置为true 并将查询字符串写入URLConnection#getOutputStream() 而不是在URL 中。

    请注意,它是“延迟执行”的,只有在您实际通过URLConnection#getInputStream() 获得响应流时才会触发请求,即使您不需要它。

    如果您想减少冗长的代码和/或对请求进行更多控制,那么我建议您使用Apache Commons HttpComponents Client

    反过来,PHP 程序也可以按照通常的方式编写。通过$_GET$_POST等获取请求参数,echo响应。这里没有什么特别需要做的。但是,您可以考虑使用更容易解析的响应格式,例如 XML 或 JSON。

    【讨论】:

    • 假设我们已经向接收 $_GET/$_POST 参数的 PHP 程序发送了一个 HTTP 请求,进行了一些处理并想要回显一个字符串“处理成功”。我是否只是简单地执行 echo $string 并且 Java 程序将在 URLConnection 的 InputStream 中接收它?
    • 在运行教程中提供的脚本时,我遇到了页面stackoverflow.com/questions/2543106/… 上给出的错误,但我无法猜出相同的原因。
    • dtmilano.blogspot.com/2008/11/… 提供了上述的另一个解决方案,但这并没有帮助我。
    【解决方案2】:

    您应该使用 PHP 构建一个简单的基于 JSON 或 XML 的 REST Web 服务。

    然后使用 Android SDK,您可以使用HttpClient 模块连接到您的网络服务。 SDK 还提供了JSONXML 模块来解析结果。

    【讨论】:

      猜你喜欢
      • 2014-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多