Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 应用程序开发是否需要使用基于HTTP的客户端/服务器通信?_Android_Servlets - Fatal编程技术网

Android 应用程序开发是否需要使用基于HTTP的客户端/服务器通信?

Android 应用程序开发是否需要使用基于HTTP的客户端/服务器通信?,android,servlets,Android,Servlets,我想用MySQL在Android上制作一个应用程序 我是新来的,所以我第一次看到很多其他人的应用程序设计。我发现一件事是,如果他们必须使用数据库,他们通常使用RESTful设计,为客户端/服务器端通信的HTTP协议定义一些API。然后,还有很多事情要做,比如:将资源映射到url,发送/接收doGet,doPost,。。请求 但我不明白。这是一个应用程序开发,而不是网页开发。为什么他们要让一个应用程序如此像一个网络?如果我不想使用phoneGap,HTML5。。这种基于HTML的开发,我想写一个本

我想用MySQL在Android上制作一个应用程序

我是新来的,所以我第一次看到很多其他人的应用程序设计。我发现一件事是,如果他们必须使用数据库,他们通常使用RESTful设计,为客户端/服务器端通信的HTTP协议定义一些API。然后,还有很多事情要做,比如:将资源映射到url,发送/接收doGet,doPost,。。请求

但我不明白。这是一个应用程序开发,而不是网页开发。为什么他们要让一个应用程序如此像一个网络?如果我不想使用phoneGap,HTML5。。这种基于HTML的开发,我想写一个本地应用程序。我仍然希望在我的代码中分离客户端和服务器端,我的服务器端可以与MySQL通信,我的客户端可以向用户显示它,它们都是用java编写的。因为它们都是java,所以我有了一个本地的想法:

“为什么不直接从客户端调用服务器端代码?”

因为它都是在一个应用程序上运行的,所以没有必要将它映射到一个供用户访问的url。但正如我观察到的,大多数人不会这样做。所以我想知道他们为什么不按我想的方式制作应用程序?是为了安全吗?还是为了降低调试难度?或者以后扩展到其他平台,如iOS


我想知道他们为什么选择基于HTTP的客户端/服务器通信。

这不仅仅是安全问题,因为无论哪种方式,您都会将外部
套接字设置到目标,而且还因为您的应用程序和
MySQL
之间没有本地通信方式。这种方式最常见的方法是使用web服务,在web服务中,您将使用您最喜欢的语言(PHP、Python…)实现一个HTTP服务器,该服务器将处理客户机发出的请求,并相应地进行处理。这个第三方脚本将与数据库通信

如果您最终选择了这种方法,并且考虑到安全性,我会选择一些非对称加密算法,如
TLS
,您可以使用公钥对消息进行加密,然后在服务器端使用私钥对消息进行解密

您可以毫无顾虑地共享公钥,您可以简单地将其嵌入到代码中,但也可以将其放入web服务器中,让您的客户端在每次连接时下载公钥。这样,如果有一天你更改了它(例如,因为一个令人心碎的情况),他们将始终拥有当前的公钥;否则,如果在代码中硬编码公钥,则需要更新应用程序

一些有用的链接:


HTTP更安全。如果您直接使用MySQL,攻击者可以轻松确定如何访问您的数据库,然后随心所欲地使用它。通过在中间包含一个Web应用程序,你可以过滤允许的动作来保持数据库的安全和有效。如果你选择SQLite,你可以在本地拥有数据库而不做任何HTTP调用。我相信Android没有MySQL的原生支持,因此http是一种常见的传输方式。谢谢,所以这是出于安全考虑。我这样问是因为我看到一些人成功地直接使用jdbc在Android上获取MySQL。有一个教程可以这样做:但是如果数据库经常被访问,那么也不推荐这样做。所以我将选择web服务方式,您的信息非常有用。