我想(在两个方向上)将移动客户端(Android等)与Web应用程序(中央服务器)链接。换句话说:移动客户端 - 服务器通信。
我是开发Android的新手,但是开发了PHP和MySQL。
请为我指出正确的方向:使用什么技术(REST,JSON,XML或其他),OAuth授权,PHP可以有[micro]框架用于这些目的。
欢迎使用关键字,最佳文章链接,书籍和示例。
UPD 。是的,我看到谷歌的很多信息。但我想开始正确,当然使用最佳做法。
答案 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());
}
});
}
此消息有点粗糙,但您可以看到您的问题的想法。希望它可以帮助您构建应用程序。