Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.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应用程序开发和Web服务器交互_Android_Web Services - Fatal编程技术网

Android应用程序开发和Web服务器交互

Android应用程序开发和Web服务器交互,android,web-services,Android,Web Services,我只是在学习安卓系统的开发,所以请原谅,如果这是一个有点不自然。 我想做一个应用程序,从我的网站与数据库交互,在某种意义上说,这两件事将是一个喂养另一个。因此,有了这一点。我正试图找出与我的服务器交互的最佳方式。我不想要一个在类似浏览器的环境中运行的应用程序,我想要开发一个完整的应用程序,它独立于站点运行,只共享数据库和类似的功能。那么,我最好的方法是什么 正在构建应用程序,以便它可以发布/获取服务器上的php文件,基本上通过JSON/XML进行交互,这是我的最佳选择,也是最安全的选择,或者是否

我只是在学习安卓系统的开发,所以请原谅,如果这是一个有点不自然。 我想做一个应用程序,从我的网站与数据库交互,在某种意义上说,这两件事将是一个喂养另一个。因此,有了这一点。我正试图找出与我的服务器交互的最佳方式。我不想要一个在类似浏览器的环境中运行的应用程序,我想要开发一个完整的应用程序,它独立于站点运行,只共享数据库和类似的功能。那么,我最好的方法是什么

正在构建应用程序,以便它可以发布/获取服务器上的php文件,基本上通过JSON/XML进行交互,这是我的最佳选择,也是最安全的选择,或者是否有更好的方法将应用程序连接到服务器数据库,而不需要我向发出请求的任何ip打开数据库


只是在这里寻找意见和建议。我想每个看到这个的人都熟悉安卓系统的开发和最佳实践,我尽可能多地浏览过博客和其他一切,但对于哪一个是最好的,他们的意见似乎各占一半

我们发现,提供适当的RESTful web API,以您选择的任何语言(无论是PHP、RoR还是其他语言)在后端访问数据库,为各种用途(您自己的网站、移动应用程序等)提供了一个有用的界面


然后是Android应用程序与RESTful API交互的问题,这只是HTTP请求。这些可以封装在helper类中,使它们变得简单明了。

根据我的经验,使用Android进行RESTFul操作的最佳框架是:

从客户端的角度来看,它提供了访问安全RESTFul服务所需的所有工具。因为它是Spring,所以它为大多数boiler plate http代码提供了很好的抽象。例如,它提供了一种干净的方法来执行返回json的GET,然后将其序列化到POJO

例如:

RestTemplate restTemplate = new RestTemplate();

// Add Jackson JSON Message Converter to Template
restTemplate.setMessageConverters(
    new ArrayList<HttpMessageConverter<?>>() {
        {              
            add(new MappingJacksonHttpMessageConverter());
        }
    }
);  

// Simple Conversion - pojo is now populated
MyPojo pojo = restTemplate.getForObject(url, MyPojo.class);
RestTemplate RestTemplate=new RestTemplate();
//将Jackson JSON消息转换器添加到模板
restemplate.setMessageConverters(

新的ArrayList我确信Android上有一些库可以帮助您使用HTTP Get和Post,但是,如果您真的想了解正在发生的事情,您只需要了解几个类,就可以自己创建必要的类

首先,了解HttpClient、HTTPGet、HTTPPost和HTTPResponse。一些较新版本的Android也有一些不错的其他类,但这四个类基本上就是您开始学习的全部内容

您需要这样做:

HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet("http://www.myurl.com/api_name");
HttpResponse response = client.execute(request);
如果您对此进行调试(当然是使用真实的URL),您会注意到您的应用程序在client.execute()期间会冻结。这是请求实际触发的点,应用程序正在等待响应。一旦您实际获得响应,就不难从中获取数据

一旦你理解了这一点,你就会想了解AsyncTask,它对于执行后台任务来说是非常有用的。你可以在这里找到文档:在顶部有一个关于如何使用它的好例子


结合使用这两个概念,您可以执行异步HTTP请求。基本上,将实际的HTTP执行代码放在AsyncTask的doInBackground中。在doInBackground结束时,返回您的响应,然后在AsyncTask的onPostExecute中对数据执行您想要的操作。

您在问题中提到的方法:PHP on t请求/响应的服务器和JSON确实有效,但要做到完美可能很棘手

我发现在Android端为每个调用提供小的请求/响应类很有帮助,比如SaveNoteToServerRequest、SaveNoteToServerResponse类,它们只是简单的java对象,具有请求/响应所需的任何字段。然后,您可以使用像GSON这样的库将请求对象转换为JSON并转换http res将JSON发送到响应对象

在PHP端,您可以为响应对象创建一个小类,然后在最后进行json_编码

这样,您就不会直接操作JSON对象,大部分时间只使用您自己的普通java对象或php类


希望这能有所帮助。

我同意布赖恩的观点。我开发了一款android应用程序,可与数据库支持的网站配合使用。(我们使用ROR)。我们只做RESTful API并使用JSON。如果你使用JSON,我建议使用GSON。我对内置JSON android解析器没有很好的经验。就RESTful API而言,它们应该能满足你的需要。我们能够像网站一样与数据库充分交互。我使用android apache框架进行HTTP请求,因为内置的也不是很健壮。我会把apache框架和gson放在哪里..这些东西是驻留在我的web服务器上可以使用的,还是在准备启动时我会将它们包装在android文件中?这些东西会作为外部库放在你的android应用程序上链接。