0

我正在为一家用户正在寻找房屋出租的企业工作。这些可以通过我们的网站查看。

我正在寻找创建一个 Android 应用程序来帮助人们在智能手机上找到房子。如何让移动应用程序从网络服务器(PHP/MySQL *)获取数据并向其发出请求?

这不是 Web 服务的定义吗?那么PHP和Android平台版本8(2.2 Froyo)支持什么样的webservice呢?

有一个重要要求:它应该是安全的,需要应用程序进行身份验证,即只有应用程序才能访问数据。

* 支持 Python 2.6.6。我真的很喜欢 Python,但我不喜欢混合服务器语言,因为网站 100% 是用 PHP 编写的。

4

2 回答 2

2

如何让移动应用程序从网络服务器(PHP/MySQL *)获取数据并向其发出请求?

在 Android 上,您可以使用旧版本的Apache HTTP 客户端。因此,从您的应用程序向您的服务器发出 HTTP 请求的那一侧被覆盖:

HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet("https://www.myserver.com/webservice/xyz");
HttpResponse response = client.execute(request);

只需 3 行代码,您就有了一个 GET 请求。

那么PHP和Android平台版本8(2.2 Froyo)支持什么样的webservice呢?

多种不同的 Web 服务库可用于 PHP,例如 SOAP 和其他基于 XML 的协议。我个人不会这样做,因为 XML 很臃肿。您希望保持服务器和客户端之间传输的数据较小,因为您正在处理移动设备、有限的带宽和昂贵的数据计划。JSON 是 XML 的更紧凑的替代方案。您还可以创建自己的“二进制”数据格式,用于在服务器和客户端之间交换数据。

在 Android 端,您只需要为您选择的 Web 服务寻找合适的 Java 客户端库。或者,如果您寻求自定义解决方案,您只需自己编写代码。

有一个重要要求:它应该是安全的,

使用 HTTPS

通过要求应用程序进行身份验证,即只有应用程序能够访问数据。

除非您正在处理用户登录,否则这无法可靠地执行,那么可以。如果您确实需要您的用户登录,请查看 OAuth。

不要在您的客户端应用程序或服务器上存储纯文本密码。

如果您只想强制只有您的应用程序可以访问该 Web 服务,那么您可以在应用程序的 HTTP 请求标头中添加类似“客户端密码”字符串的内容。您的服务器将要求该秘密字符串存在,否则访问将被拒绝。

不过,这不会阻止人们查看您的应用程序以找出这个秘密。你可以通过混淆那个秘密字符串来让它变得更难一些,比如在字母周围随机混杂等等。

您还可以在每次重大更新时定期更改客户端密码。这将要求您的用户必须更新,否则他们将被锁定。

于 2012-07-16T16:57:22.633 回答
0

您可能需要考虑实现一个函数来在您的 Android 应用程序(如json-simple )中向 PHP 服务器查询 JSON 数据,并在您的服务器中实现一种检索 GET 请求的方法(查看 interperting $ _GET然后发送回JSON)。

您也可以使用 XML、纯文本或其他任何内容,但 JSON 可能是最小且实现最快的。

于 2012-07-16T16:30:44.570 回答