如何开发:Web服务器和移动客户端

时间:2015-12-11 09:40:20

标签: php android mobile webserver client-server

我想(在两个方向上)将移动客户端(Android等)与Web应用程序(中央服务器)链接。换句话说:移动客户端 - 服务器通信。

我是开发Android的新手,但是开发了PHP和MySQL。

请为我指出正确的方向:使用什么技术(REST,JSON,XML或其他),OAuth授权,PHP可以有[micro]框架用于这些目的。

欢迎使用关键字,最佳文章链接,书籍和示例。

UPD 。是的,我看到谷歌的很多信息。但我想开始正确,当然使用最佳做法

2 个答案:

答案 0 :(得分:1)

我也是Android开发的新手,也经常搜索这个。我将解释我是如何实现这一目标的。

要与php服务器通信,你需要创建php rest apis [我正在使用这个参考的飞行php框架工作:http://flightphp.com/]

在Android方面,您需要调用此api。为此,我使用第三方库改造(因为它易于使用)ref:http://square.github.io/retrofit/

你也可以使用HttpURLConnection(参考:http://developer.android.com/reference/java/net/HttpURLConnection.html)安卓库我认为这有点困难,因为我们需要创建一个asynctask和所有

你可以在谷歌找到一些关于如何使用改造的教程:https://www.google.co.in/?gws_rd=ssl#q=android+retrofit+tutorial

答案 1 :(得分:1)

欢迎使用Android开发!

首先,设计您的API。您可以找到详细信息here。一旦拥有它,就可以用PHP构建REST服务器。我使用slim框架(http://www.slimframework.com/)进行路由,使用RedBeanPHP(http://redbeanphp.com)进行数据库访问。 Here是一个用苗条创建REST服务器的教程。

服务器安置后(或多台服务器),您可以设置您的Android应用程序。 我正在积极地使用改造(http://square.github.io/retrofit/请参考v2.beta)。

这是您如何实现它的示例。改造将把从REST服务器接收的JSON对象转换为java对象,这是神奇的。

public interface RestInterface {

    @POST("/register")
    Call<RestResponse> register(@Body RestRegister register);

    @POST("/request_validation")
    Call<RestResponse> request_validation(@Header(Constants.HEADER_KEY) String header);
...
}

当然,您必须实现对象。如果你愿意,我可以给出一个更详细的例子。 您还必须创建一个restClient:

public class RestClient {
    private OkHttpClient client;
    private RestInterface restInterface;
    public RestClient()
    {
        client = new OkHttpClient(); 
        client.interceptors().add(new LoggingInterceptor());

        Retrofit retrofit = new Retrofit.Builder()
                .client(client)
                .baseUrl(Constants.WEBSERVICE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        restInterface = retrofit.create(RestInterface.class);
}

最后,我有一个服务,我调用RestClient来接听电话。这是一种方法。

private void handleSendingRegistration(RestRegister register) {
    final String method = "handleSendingRegistration: ";
    Call<RestResponse> response = restClient.getGatherInterface().register(register);
    response.enqueue(new RestCallback<RestResponse>() {
        @Override
        public void onSuccess(Response<RestResponse> response) {
            Log.d(TAG, method + response.body().getMessage());
        }

        @Override
        public void onFailure(Throwable t) {
            Log.e(TAG, method + t.getMessage());
        }
    });
}

此消息有点粗糙,但您可以看到您的问题的想法。希望它可以帮助您构建应用程序。