GridmiAPI-用于REST和RPC的简单灵活的Android库

您好,Khabrovites!

在为Android平台开发网络应用程序时,您会了解一个应用程序和另一个应用程序彼此相似。 出于这种想法,大多数开发人员开始了另一种想法:“为什么我不使用任何现成的解决方案,因为显然我的任务并不新?”。 从这一刻起,开始寻找合适的库来解决当前问题。 经过一段时间-获利。 一切似乎都很好,因为找到了该库,只剩下编写当前问题解决方案的实现了。 问题就从这里开始。 它们与流控制相关联,实际上Java从未以其紧凑性着称,所有“魔术”都应由开发人员直接实现。 有时,我在这方面仅能找到积极的方面,因为每个项目的逻辑彼此根本不同。 您经常需要从一个流切换到另一个流,这不是很方便,而且如前所述,很麻烦。 这个问题的解决方案是较早实施的,但没有我们想要的那么紧凑。 救援GridmiAPI提供了用于处理HTTP的库。 这是最紧凑的解决方案,它使您可以实时处理数据。

工作流程


所有库工作均始于其初始化。 初始化需要一次。 初始化是指以下构造:

GridmiAPI.init("https://habr.com/API/", 8000, JSONObject.class); 

  1. 请求处理端点地址
  2. 服务器响应超时
  3. 服务器响应应转换为的类

仅此而已! 该库已准备就绪,可以充分使用。

第一个服务器请求


要完成对服务器的第一个请求,您只需要编写几行代码和我们需要的数据即可。 不信? 请参阅:

 GridmiAPI.onRequest(this, new GridmiAPI.Request("profile/get"), new GridmiAPI.Handler.OUT() { @Override protected void onSuccess(GridmiAPI.Response response) { Log.d("TagGridmiAPI", "result = " + ((JSONObject) response.getData()).toString()); } @Override protected void onFailed(Exception exception) { Log.d("TagGridmiAPI", "exception = " + exception.getMessage()); } }).start(); 

恭喜你! 这就是您的“ Hello world!” 使用这个库。 让我们看一下GridmiAPI.Handler.OUT类的两个重写方法。 首先,应该写这两个方法在主线程中被调用,因此,在请求完成后,访问活动以启动主线程是没有意义的。 您仅以JSON为例,并更改TextView的文本。 一切都很简单。

发送文件到服务器


很多时候,您必须将文件发送到服务器。 再次头痛? 没办法 GridmiAPI库使发送文件变得非常容易,没有麻烦。 行数比上面的示例多,但仍然紧凑。 发送文件的方法如下:

 @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (data == null || data.getData() == null) return; try { //     GridmiAPI.Request request = new GridmiAPI.Request("POST", "photo/add"); //      GridmiAPI.Multipart multipart = new GridmiAPI.Multipart(getContentResolver()); multipart.appendData("photo", data.getData()); //    request.setBody(multipart); //   GridmiAPI.onRequest(this, request, new GridmiAPI.Handler.OUT() { @Override protected void onSuccess(GridmiAPI.Response response) { try { //      boolean result = ((JSONObject) response.getData()).getBoolean("result"); //  Toast.makeText(MainActivity.this, result ? "!" : "!", Toast.LENGTH_LONG).show(); } catch (Exception exception) { this.onFailed(exception); } } @Override protected void onFailed(Exception exception) { //     Toast.makeText(MainActivity.this, exception.getMessage(), Toast.LENGTH_LONG).show(); } }).start(); } catch (Exception exception) { Toast.makeText(this, exception.getMessage(), Toast.LENGTH_LONG).show(); } } 

结论


我们研究了最受欢迎的任务,您可以在GitHub- GridmiAPI上该库的页面上更详细地了解自己。 使用此库很舒服。 估计自己。 感谢您对本文的关注!

参考文献


GridmiAPI库
文档/ReadMe.md

Source: https://habr.com/ru/post/zh-CN470570/


All Articles